【问题标题】:Not receiving WM_COMMAND in GetMessage loop在 GetMessage 循环中未收到 WM_COMMAND
【发布时间】:2013-10-01 00:51:53
【问题描述】:

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

【问题讨论】:

    标签: c++ winapi


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-14
      相关资源
      最近更新 更多