CWnd::OnSysCommand
更新 : 2007 年 11 月
ユーザーがコントロール メニューからコマンドを選択したとき、または最大表示か最小化ボタンを選択したときに、フレームワークからこのメンバ関数が呼び出されます。
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