WM_COMMAND メッセージ

ユーザーがメニューからコマンド項目を選択したとき、コントロールが親ウィンドウに通知メッセージを送信したとき、またはアクセラレータ キーストロークが変換されたときに送信されます。

#define WM_COMMAND                      0x0111

パラメーター

wParam

このパラメーターの説明については、「解説」を参照してください。

lParam

このパラメーターの説明については、「解説」を参照してください。

戻り値

アプリケーションでこのメッセージを処理する場合は、0 を返す必要があります。

BOOL AboutDlg (
    HWND hDlg, 
    UINT message, 
    WPARAM wParam, 
    LPARAM lParam)
{
    BOOL bRet = FALSE;
    
    switch (message) 
    {
        case WM_INITDIALOG:
            bRet = TRUE;
            break;

        case WM_COMMAND:
            if (wParam == IDOK ||
                wParam == IDCANCEL) 
            {
                EndDialog(hDlg, TRUE);
                bRet = TRUE;
            }
            break;
    }

    return bRet;
}

GitHub 上の Windows クラシック サンプルから取得した例。

解説

wParam および lParam パラメーターの使用の概要を次に示します。

メッセージ ソース wParam (上位ワード) wParam (下位ワード) lParam
メニュー 0 メニュー識別子 (IDM_*) 0
Accelerator 1 アクセラレータ識別子 (IDM_*) 0
コントロール コントロール定義の通知コード コントロール識別子 コントロール ウィンドウへのハンドル

アプリケーションでメニューの区分線を有効にすると、ユーザーが区分線を選択したときに、wParam パラメーターの下位ワードが 0 に設定された WM_COMMAND メッセージがシステムによって送信されます。

メニューが MNS_NOTIFYBYPOSMENUINFO.dwStyle 値で定義される場合、WM_COMMAND の代わりに WM_MENUCOMMAND が送信されます。

アクセラレータ

ウィンドウから項目を選択するアクセラレータ キーストロークは、WM_SYSCOMMAND メッセージに変換されます。

メニューを所有するウィンドウが最小化されているときにメニューに対応するアクセラレータ キーストロークが発生した場合、WM_COMMAND メッセージは送信されません。 ただし、ウィンドウのメニューまたはウィンドウ メニューのどの項目とも一致しないアクセラレータ キーストロークが発生すると、ウィンドウが最小化されている場合でも、WM_COMMAND メッセージが送信されます。

要件

要件 Value
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Winuser.h (Windows.h を含む)

関連項目

リファレンス

HIWORD

LOWORD

Conceptual

メニュー