InitCommonControls(): ошибка при линковке
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
HWND hWnd;
WNDCLASS WndClass;
MSG Msg;
hInst = hInstance;
// Регистрируем создаваемый класс окна. Заполняем структуру WNDCLASS
WndClass.style = CS_HREDRAW | CS_VREDRAW;
WndClass.lpfnWndProc = (WNDPROC)MenuDemoWndProc;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hInstance = hInstance;
WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.lpszMenuName = NULL;
WndClass.lpszClassName = "MenuExample";
if ( !RegisterClass(&WndClass) )
{
MessageBox(NULL, "Класс не зарегистрирован", "Error", MB_OK);
return 0;
}
hWnd = CreateWindow("MenuExample", "Program #2 p.81",
WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL,
hInstance, NULL);
if ( !hWnd )
{
MessageBox(NULL, "Окно не создано", "Error", MB_OK);
return 0;
}
InitCommonControls();
hStatusWindow = CreateStatusWindow(WS_CHILD | WS_VISIBLE, "Menu sample", hWnd, wId);
if ( !hStatusWindow )
{
MessageBox(NULL, "Статусная строка не создана", "Error", MB_OK);
return 0;
}
.....................................
.....................................
}
LRESULT CALLBACK MenuDemoWndProc(HWND hWnd, UINT Message, UINT wParam, LONG lParam)
{
.....................................
.....................................
}
А вот результат компиляции:
--------------------Configuration: Menu - Win32 Debug--------------------
Compiling...
Menu.cpp
Linking...
Menu.obj : error LNK2001: unresolved external symbol __imp__CreateStatusWindowA@16
Menu.obj : error LNK2001: unresolved external symbol __imp__InitCommonControls@0
Debug/Menu.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
Menu.exe - 3 error(s), 0 warning(s)
Почему? (InitCommonControlsEx() пробовал - то же самое, только вместо __imp__InitCommonControls@0 - __imp__InitCommonControlsEx@4.
Спасибо всем, кто ответит!
comctl32.lib
и вообще обращай внимание на описание ф-ций в МСДН:
InitCommonControls
Registers and initializes the common control window classes. This function is obsolete. New applications should use the InitCommonControlsEx function.
void InitCommonControls(VOID);
Return Values
No return value.
Requirements
Windows NT/2000: Requires Windows NT 3.51 or later
Windows 95/98/Me: Requires Windows 95 or later
Header: Declared in commctrl.h
Import Library: comctl32.lib
commctrl.h нада #include
comctl32.lib её нада в свойствах проекта добавить в Linker options
Спасибо, помогло!