0

WM_COMMAND有人可以解释为什么我在 GetMessage 循环中从未收到消息吗?
我已经检查过并且 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

4

1 回答 1

7

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

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

于 2013-09-30T16:51:53.607 回答