2013-09-30 29 views
0

有人可以解釋爲什麼我從未在我的GetMessage循環中收到WM_COMMAND消息嗎?
我檢查過,WndProc收到了WM_COMMAND消息,所以我很困惑爲什麼這不起作用。在GetMessage循環中沒有收到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

回答

7

因爲WM_COMMAND與SendMessage消息發送()。它直接調用窗口過程。只有使用PostMessage()發佈的消息纔會添加到隊列中,並通過GetMessage()進行檢索。

您可以在Spy ++等實用程序中看到它,它會標註使用P發送的消息以及使用S發送的消息。