首先,这是我的代码的重要部分:
MSG msg;
bool done = false;
ZeroMemory(&msg, sizeof(MSG));
while (!done)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
{
done = true;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
我的问题是,第二个“if”语句实际上从不捕获WM_QUIT消息,因此我的消息循环永远不会结束。实际上我无法使用此循环中的“if”语句捕获任何消息。使用Visual Studio 2013调试器,我尝试查看msg.message的值,并将它们与可用窗口消息列表进行比较。我无法找到我在该列表中获得的任何价值。
我不理解消息循环的概念,或者此代码中是否还有其他错误?
答案 0 :(得分:0)
Stefan在其中一条评论中得到了答案。
我的问题是我假设“DefWindowProc”调用PostQuitMessage()但它没有。将该调用添加到我的WNDPROC解决了这个问题。谢谢你的帮助。