0

WM_COMMANDGetMessage ループでメッセージを受信しない理由を誰か説明してもらえますか?
確認したところ、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);
    }
}

OS: Windows8

4

1 に答える 1

7

WM_COMMAND は SendMessage() で送信されるためです。ウィンドウプロシージャを直接呼び出します。PostMessage() で投稿されたメッセージのみがキューに追加され、GetMessage() によって取得されます。

これは、Spy++ などのユーティリティで確認できます。これは、P で投稿されたメッセージと S で送信されたメッセージに注釈を付けます。

于 2013-09-30T16:51:53.607 に答える