LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch ( message ) { case WM_CREATE: { RECT wantRect = { 0, 0, GameManager::RESOLUTION_X, GameManager::RESOLUTION_Y }; AdjustWindowRect(&wantRect, WS_CAPTION | WS_SYSMENU, false); MoveWindow(hWnd, 0, 0, wantRect.right - wantRect.left, wantRect.bottom - wantRect.top, true); } break; case WM_DESTROY: g_GameManager.Destroy(); PostQuitMessage(0); break; case WM_LBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONDOWN: case WM_RBUTTONUP: case WM_MOUSEMOVE: case WM_MOUSEWHEEL: g_GameManager.GameInputProc(hWnd, message, wParam, lParam); break; break; default: return DefWindowProc(hWnd, message, wParam, lParam); break; } return 0; }