CWnd::OnSysKeyUp
CWnd オブジェクトが入力フォーカスを持っている場合に、ユーザーが Alt キーを押した状態で押していたほかのキーを離すと、フレームワークから OnSysKeyUp メンバー関数が呼び出されます。
afx_msg void OnSysKeyUp(
UINT nChar,
UINT nRepCnt,
UINT nFlags
);
パラメーター
nChar
押されているキーの仮想キー コードを指定します。 標準の仮想キー コードの一覧については、Winuser.h を参照してください。nRepCnt
繰り返し回数を指定します。nFlags
次に示すスキャン コード、キー変換コード、直前のキー状態、およびコンテキスト コードを指定します。値
説明
0–7
スキャン コード (OEM 依存の値)。 上位ワードの下位バイト。
8
ファンクション キーなどの拡張キーまたはテンキー上のキーなど (拡張キーの場合は 1、それ以外の場合は 0)。
9–10
使用しません。
11–12
Windows 内部で使用します。
13
コンテキスト コード (Alt キーを押した状態でほかのキーを押した場合は 1、それ以外の場合は 0)
14
直前のキー状態 (メッセージが送られる前にキーを押した場合は 1、離した場合は 0)
15
変換状態 (キーが離されている場合は 1、押されている場合は 0)。
OnSysKeyUp 関数では、キー変換ビット (ビット 15) は 1 で呼び出されます。 コンテキスト コード ビット (ビット 13) は、Alt キーが押されている状態で他のキーが押された場合は 1、入力フォーカスを持つウィンドウがないためアクティブ ウィンドウにメッセージが送られた場合は 0 になります。
解説
現在入力フォーカスを持つウィンドウがない場合は、アクティブなウィンドウの OnSysKeyUp メンバー関数が呼び出されます。 このメッセージを受け取った CWnd オブジェクトは、nFlags のコンテキスト コードを調べることで、どちらのコンテキストかを区別できます。
コンテキスト コードが 0 の場合、OnSysKeyUp が受け取った WM_SYSKEYUP メッセージを TranslateAccelerator Windows 関数に渡すことができます。この関数は、システム キー メッセージを通常のキー メッセージのように処理します。 これによって、アクティブ ウィンドウが入力フォーカスを持っていない場合でも、アクティブ ウィンドウでアクセラレータ (ショートカット) キーが使用できるようになります。
IBM の 101 キーまたは 102 キーの拡張キーボードで拡張されたキーは、キーボードのメイン セクションの右 Alt キーと右 Ctrl キー、テンキーの左にある Ins キー、Del キー、Home キー、End キー、PageUp キー、PageDown キー、方向キー、およびテンキーのスラッシュ (/) キーと Enter キーです。 ほかのキーボードでは、nFlags の拡張キー ビットで拡張キーをサポートすることがあります。
U.S. 版以外の 102 キー拡張キーボードでは、右 Alt キーが Ctrl + Alt キーとして扱われます。 このキーを押し、離すという操作が行われると、次の順序でメッセージと呼び出しが発生します。
シーケンス |
アクセスされる関数 |
渡されるメッセージ |
---|---|---|
1. |
VK_CONTROL |
|
2. |
VK_MENU |
|
3. |
VK_CONTROL |
|
4. |
VK_MENU |
注意
このメンバー関数は、アプリケーションが Windows メッセージを処理できるようにするためにフレームワークによって呼び出されます。 この関数に渡されるパラメーターの値は、フレームワークがメッセージ受信時に受け取ったパラメーターの値に基づいています。 この関数の基本クラスの実装を呼び出した場合は、関数に渡したパラメーターではなく、メッセージと共に渡されたパラメーター自体が使用されます。
必要条件
**ヘッダー:**afxwin.h