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()は、メッセージのポストを待たずに制御を戻します。
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);