KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
In my C++ application's GUI object I have the following in the main window procedure: case WM_SIZE: { OutputDebugString(L"WM_SIZE received.\n"); RECT rect = {0}; GetWindowRect(hwnd, &rect); if (!PostMessage(0, GUI_MSG_SIZECHANGED, w, MAKELONG(rect.bottom - rect.top, rect.right - rect.left))) { OutputDebugString(L"PostMessage failed.\n"); // <--- never called } } return 0; // break; The GUI object also has the following getMessage() method: int GUI::getMessage(MSG & msg) { BOOL result = 0; while ((result = GetMessage(&msg, 0, 0, 0)) > 0) { if (msg.message > (GUI_MSG_BASE-1) && msg.message < (GUI_MSG_LAST+1)) { OutputDebugString(L"GUI message received.\n"); break; } else { TranslateMessage(&msg); DispatchMessage(&msg); } } return result; } The application object calls this method in the following way: while ((result = _gui.getMessage(msg)) > 0) { switch (msg.message) { // TODO: Add gui message handlers case GUI_MSG_SIZECHANGED: OutputDebugString(L"GUI_MSG_SIZECHANGED received.\n"); _cfg.setWndWidth(HIWORD(msg.lParam)); _cfg.setWndHeight(LOWORD(msg.lParam)); if (msg.wParam == SIZE_MAXIMIZED) _cfg.setWndShow(SW_MAXIMIZE); else if (msg.wParam == SIZE_MINIMIZED) _cfg.setWndShow(SW_MINIMIZE); else if (msg.wParam == SIZE_RESTORED) _cfg.setWndShow(SW_SHOWNORMAL); break; } } The application object is interested in the window size because it stores this information in a configuration file. When I run this in Visual Studio's debugger, the output window looks like this after resizing the window: W
Tags (comma-separated)
Save Edits
Cancel