C ++窗口消息循环,无法捕获消息

时间:2014-05-01 00:16:06

标签: winapi window

首先,这是我的代码的重要部分:

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的值,并将它们与可用窗口消息列表进行比较。我无法找到我在该列表中获得的任何价值。

我不理解消息循环的概念,或者此代码中是否还有其他错误?

1 个答案:

答案 0 :(得分:0)

Stefan在其中一条评论中得到了答案。

我的问题是我假设“DefWindowProc”调用PostQuitMessage()但它没有。将该调用添加到我的WNDPROC解决了这个问题。谢谢你的帮助。