次の方法で共有


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 演算をすることで正しい結果を得ることができます。

コントロール メニューのメニュー項目は、GetSystemMenuAppendMenuInsertMenu、および ModifyMenu メンバー関数を使って変更できます。 コントロール メニューを変更するアプリケーションは、WM_SYSCOMMAND メッセージを処理する必要があります。さらに、アプリケーションで処理されない WM_SYSCOMMAND メッセージは OnSysCommand 関数に渡す必要があります。 アプリケーションで追加したコマンドの値は、必ずアプリケーションで処理します。OnSysCommand 関数へ渡すことはできません。

アプリケーションは、WM_SYSCOMMAND メッセージを OnSysCommand 関数へ渡すことで、いつでも任意のシステム コマンドを実行できます。

コントロール メニューから項目を選択するために定義されたアクセラレータ (ショートカット) キーストロークは、OnSysCommand 関数の呼び出しに変換されます。そのほかのアクセラレータ キーストロークは、WM_COMMAND メッセージに変換されます。

注意

このメンバー関数は、アプリケーションが Windows メッセージを処理できるようにするためにフレームワークによって呼び出されます。 この関数に渡されるパラメーターの値は、フレームワークがメッセージ受信時に受け取ったパラメーターの値に基づいています。 この関数の基本クラスの実装を呼び出した場合は、関数に渡したパラメーターではなく、メッセージと共に渡されたパラメーター自体が使用されます。

必要条件

**ヘッダー:**afxwin.h

参照

参照

CWnd クラス

階層図

WM_SYSCOMMAND

概念

CWnd のメンバー