メッセージの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 |
アクセラレータ | 1 | アクセラレータ識別子 (IDM_*) | 0 |
コントロール | コントロール定義の通知コード | コントロール識別子 | コントロール ウィンドウへのハンドル |
メニュー
アプリケーションでメニュー区切り記号を有効にした場合、ユーザーが区切り 記号を選択 すると、 wParam パラメーターの下位ワードが 0 に設定されたWM_COMMAND メッセージが送信されます。
MENUINFO.dwStyle 値が MNS_NOTIFYBYPOS のメニューが定義されている場合、WM_COMMANDではなくWM_MENUCOMMANDが送信されます。
アクセラレータ
ウィンドウ メニューから項目を選択するアクセラレータキーストロークは、 WM_SYSCOMMAND メッセージに変換されます。
メニューを所有するウィンドウが最小化されているときにメニュー項目に対応するアクセラレータキーストロークが発生した場合、 WM_COMMAND メッセージは送信されません。 ただし、ウィンドウのメニューまたはウィンドウ メニューのどの項目とも一致しないアクセラレータキーストロークが発生した場合、ウィンドウが最小化されている場合でも、 WM_COMMAND メッセージが送信されます。
必要条件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー |
|