在 GetMessage 循环中未接收WM_COMMAND

Not receiving WM_COMMAND in GetMessage loop

本文关键字:WM COMMAND GetMessage 循环      更新时间:2023-10-16

有人可以解释为什么我在 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);
    }
}

操作系统: 视窗 8

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

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