CWnd::OnSysCommand
ユーザーがコントロール メニューからコマンドを選択したとき、または最大表示か最小化ボタンを選択したときに、フレームワークからこのメンバー関数が呼び出されます。
afx_msg void OnSysCommand(
UINT nID,
LPARAM lParam
);
パラメーター
nID
要求されたシステム コマンドの種類を指定します。 次の値のいずれかを指定できます。SC_CLOSE CWnd オブジェクトをクローズします。
SC_HOTKEY アプリケーション指定のホット キーに関連付けられた CWnd オブジェクトをアクティブにします。 lParam の下位ワードでアクティブになるウィンドウの HWND を識別します。
SC_HSCROLL 水平にスクロールします。
SC_KEYMENU キーストロークによりメニューを取得します。
SC_MAXIMIZE (または SC_ZOOM) CWnd オブジェクトを最大表示します。
SC_MINIMIZE (または SC_ICON) CWnd オブジェクトを最小化します。
SC_MOUSEMENU マウス クリックによりメニューを取得します。
SC_MOVE CWnd オブジェクトを移動します。
SC_NEXTWINDOW 次のウィンドウに移動します。
SC_PREVWINDOW 直前のウィンドウに移動します。
SC_RESTORE 通常の位置とサイズにウィンドウを戻します。
SC_SCREENSAVE SYSTEM.INI ファイルの [boot] セクションで指定されたスクリーン セーバーのアプリケーションを実行します。
SC_SIZE CWnd オブジェクトのサイズを変更します。
SC_TASKLIST Windows のタスク マネージャー アプリケーションを実行またはアクティブにします。
SC_VSCROLL 垂直にスクロールします。
lParam
コントロール メニューのコマンドがマウスで選択された場合、lParam はカーソル座標を持ちます。 下位ワードに x 座標を、上位ワードに y 座標を持ちます。 それ以外はこのパラメーターを使いません。SC_HOTKEY アプリケーション指定のホット キーに関連付けられたウィンドウをアクティブにします。 lParam の下位ワードでアクティブになるウィンドウを識別します。
SC_SCREENSAVE [コントロール パネル] の [画面] セクションで指定されたスクリーン セーバーのアプリケーションを実行します。
解説
既定では、OnSysCommand 関数はコントロール メニューの上記の組み込み動作要求を処理します。
WM_SYSCOMMAND メッセージでは、パラメーター nID の下位 4 ビットが Windows 内部で使われます。 アプリケーションで nID の値を調べるときは、nID の値と 0xFFF0 をビットごとの AND 演算をすることで正しい結果を得ることができます。
コントロール メニューのメニュー項目は、GetSystemMenu、AppendMenu、InsertMenu、および ModifyMenu メンバー関数を使って変更できます。 コントロール メニューを変更するアプリケーションは、WM_SYSCOMMAND メッセージを処理する必要があります。さらに、アプリケーションで処理されない WM_SYSCOMMAND メッセージは OnSysCommand 関数に渡す必要があります。 アプリケーションで追加したコマンドの値は、必ずアプリケーションで処理します。OnSysCommand 関数へ渡すことはできません。
アプリケーションは、WM_SYSCOMMAND メッセージを OnSysCommand 関数へ渡すことで、いつでも任意のシステム コマンドを実行できます。
コントロール メニューから項目を選択するために定義されたアクセラレータ (ショートカット) キーストロークは、OnSysCommand 関数の呼び出しに変換されます。そのほかのアクセラレータ キーストロークは、WM_COMMAND メッセージに変換されます。
注意
このメンバー関数は、アプリケーションが Windows メッセージを処理できるようにするためにフレームワークによって呼び出されます。 この関数に渡されるパラメーターの値は、フレームワークがメッセージ受信時に受け取ったパラメーターの値に基づいています。 この関数の基本クラスの実装を呼び出した場合は、関数に渡したパラメーターではなく、メッセージと共に渡されたパラメーター自体が使用されます。
必要条件
**ヘッダー:**afxwin.h