有人可以解释一下为什么我从未收到过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
因为WM_COMMAND是用SendMessage()发送的。其中直接调用窗口过程。只有使用 PostMessage() 发布的消息才会添加到队列中并由 GetMessage() 检索。
您可以在 Spy++ 等实用程序中看到这一点,它注释使用 P 发布的消息和使用 S 发送的消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)