在GetMessage循环中没有收到WM_COMMAND

时间:2013-09-30 16:48:08

标签: c++ winapi

有人可以解释为什么我的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

1 个答案:

答案 0 :(得分:7)

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

你可以在像Spy ++这样的实用程序中看到它,它注释用P发布的消息和用S发送的消息。

相关问题