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_NOTIFYBYPOS の MENUINFO.dwStyle 値で定義される場合、WM_COMMAND の代わりに WM_MENUCOMMAND が送信されます。
アクセラレータ
ウィンドウから項目を選択するアクセラレータ キーストロークは、WM_SYSCOMMAND メッセージに変換されます。
メニューを所有するウィンドウが最小化されているときにメニューに対応するアクセラレータ キーストロークが発生した場合、WM_COMMAND メッセージは送信されません。 ただし、ウィンドウのメニューまたはウィンドウ メニューのどの項目とも一致しないアクセラレータ キーストロークが発生すると、ウィンドウが最小化されている場合でも、WM_COMMAND メッセージが送信されます。
要件
要件 | Value |
---|---|
サポートされている最小のクライアント |
Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー |
|