(Uczę się WinAPI)
To mam jako zmienna globalna:
const UINT WM_TASKBARCREATED = RegisterWindowMessage(L"TaskbarCreated");
Następnie rejestruję okno:
LPCWSTR className = L"MainWindow";
WNDCLASSEX mainWnd;
mainWnd.cbSize = sizeof(WNDCLASSEX);
mainWnd.style = 0;
mainWnd.cbClsExtra = 0;
mainWnd.cbWndExtra = 0;
mainWnd.lpfnWndProc = MainWndProc;
mainWnd.hInstance = hInstance;
mainWnd.hCursor = LoadCursor(NULL, IDC_ARROW);
mainWnd.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1));
mainWnd.hbrBackground = (HBRUSH)COLOR_WINDOW + 1;
mainWnd.lpszMenuName = NULL;
mainWnd.lpszClassName = className;
mainWnd.hIconSm = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1));
if (!RegisterClassEx(&mainWnd))
{
MessageBox(NULL, L"Cannot register window", L"Error", MB_ICONERROR | MB_OK);
exit(1);
}
Potem tworzę okno:
MainWndHWND = CreateWindowEx(WS_EX_WINDOWEDGE, className, L"MainWin", WS_POPUP, CW_USEDEFAULT,
CW_USEDEFAULT, 200, 200, NULL, NULL, hInstance, NULL);
if (MainWndHWND == NULL)
{
MessageBox(NULL, L"Cannot create window", L"Error", MB_ICONERROR | MB_OK);
exit(1);
}
A oto MainWndProc()
:
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_CREATE:
break;
case WM_CLOSE:
DestroyWindow(MainWndHWND);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_TASKBARCREATED: // C2313, C2051
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
};
return 0;
}
W tym mój problem. Gdy w MainWndProc()
zamieniłem całego switcha na if-y to mi tworzenie okna nie chodzi.