我使用主循环代码(我的功能):如何截获的消息: “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