有人可以解释为什么我在GetMessage循环中从不收到WM_COMMAND消息吗?
我检查了一下,WndProc收到了WM_COMMAND消息,所以我很困惑为什么这不起作用。

while (GetMessage(&msg, NULL, 0, 0) != 0)
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);

    if (msg.message == WM_COMMAND)
    {
        // This never happens:
        MessageBox(NULL, "WM_COMMAND", "WM_COMMAND", MB_OK);
    }
}


作业系统:Windows 8

最佳答案

因为WM_COMMAND与SendMessage()一起发送。直接调用窗口过程。只有用PostMessage()发布的消息才被添加到队列中,并由GetMessage()检索。

您可以在类似Spy ++的实用程序中看到这一点,它可以注释用P发布的消息和用S发送的消息。

关于c++ - 在GetMessage循环中未收到WM_COMMAND,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19099527/

10-13 03:32