Winapi C++;窗口消息循环,can';无法捕捉消息

Winapi C++;窗口消息循环,can';无法捕捉消息,winapi,window,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; }

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

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的值,并将其与可用窗口消息列表进行比较。我在那个列表中找不到任何价值


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

Stefan在其中一条评论中给出了答案


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

上述代码没有问题,因此您可能根本没有发布退出消息,或者将其发布到错误的位置,或者消息处理代码的某些部分运行自己的消息循环并将其丢弃。请确保在关闭主窗口时调用PostQuitMessage()(捕获WM_CLOSE和/或WM_DESTROY并从那里调用PostQuitMessage())