我使用主循環代碼(我的功能):如何截獲的消息: 「WM_QUIT || WM_DESTROY || WM_CLOSE」 WinAPI的
while (running)
{
if(is_close)
{
Log().push_log("close", "message close!", logInfo);
running = active = false;
break;
}
while (PeekMessage(&msg, g_hWnd, 0, 0, PM_REMOVE))
{
std::cout << "Wnd: " << msg.message << std::endl;
if (msg.message == WM_QUIT || msg.message == WM_DESTROY || msg.message == WM_CLOSE)
{
MessageBox(0, "Hello, World", "Hello", MB_OK);
running = false;
}
// TranslateMessage(&msg);
DispatchMessage(&msg);
}
if (running && active)
render.DrawObject(g_hDC);
}
好吧,那麼我使用的WndProc:
LRESULT CALLBACK GLWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
std::cout << "Wnd Proc: " << msg << std::endl;
return DefWindowProc(hWnd, msg, wParam, lParam);
}
當我試圖在我的函數中獲取消息WM_QUIT
,WM_DESTROY
或WM_CLOSE
時,它不起作用。我的功能沒有看到消息。
我怎樣才能得到這個信息?
您在調用「PeekMessage」時正在應用過濾器('g_hWnd')。除非您有非常特殊的需求,否則不要過濾消息。改爲傳遞'NULL'。 – IInspectable
謝謝。沒有幫助。 – KostyaKulakov
您將提供具體信息。什麼是*「我的功能」*? *「不起作用」*是什麼意思?你有錯誤嗎?與您預期的結果不同?你期望什麼? – IInspectable