キューからのメッセージの取得

GetMessage()

GetMessage()は、何らかのメッセージを受け取るまで待機します。

BOOL GetMessage(
  LPMSG lpMsg,         // メッセージ情報
  HWND hWnd,           // ウィンドウのハンドル
  UINT wMsgFilterMin,  // 最初のメッセージ
  UINT wMsgFilterMax   // 最後のメッセージ
  );
GetMessage 関数 | MSDN
// WM_QUITメッセージを取得するまで ループをくり返す
while (GetMessage(&msg, NULL, 0, 0))
{
    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    // くり返し実行する処理
}

PeekMessage()

PeekMessage()は、メッセージのポストを待たずに制御を戻します。

BOOL PeekMessage(
  LPMSG lpMsg,         // メッセージ情報
  HWND hWnd,           // ウィンドウのハンドル
  UINT wMsgFilterMin,  // 最初のメッセージ
  UINT wMsgFilterMax,  // 最後のメッセージ
  UINT wRemoveMsg      // 削除オプション
  );
PeekMessage 関数 | MSDN
do
{
    if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    else
    {
        // くり返し実行する処理
    }
} while (msg.message != WM_QUIT);

参考

参考書

Microsoft Learnから検索