WM_SYSKEYUP メッセージ

Alt キーを押しながら押していたキーをユーザーが離すと、キーボード フォーカスがあるウィンドウに投稿されます。 これは、その時点でどのウィンドウにもキーボード フォーカスがない場合にも当てはまります。この場合、WM_SYSKEYUP メッセージが作業中のウィンドウに送信されます。 このメッセージを受信したウィンドウでは、lParam パラメーターのコンテキスト コードを確認することで、これら 2 つのコンテキストを区別できます。

ウィンドウは、WindowProc 関数を介してこのメッセージを受け取ります。

#define WM_SYSKEYUP                     0x0105

パラメーター

wParam

押されているキーの仮想キー コード。 「仮想キー コード」を参照してください。

lParam

次の表に示すように、繰り返し数、スキャン コード、拡張キー フラグ、コンテキスト コード、前のキー状態フラグ、遷移状態フラグ。

Bits 説明
0-15 現在のメッセージの繰り返し数。 値は、ユーザーがキーを押したままにすると自動的に繰り返されるキーストロークの回数です。 繰り返し数は、WM_SYSKEYUP メッセージでは常に 1 つです。
16-23 スキャン コード。 値は、OEM によって異なります。
24 キーが拡張キー (拡張 101 キーまたは 102 キー キーボードの右側の Alt キーや Ctrl キーなど) であるかどうかを示します。 拡張キーの場合、値は 1 です。それ以外の場合は 0 です。
25-28 予約済みです。使用しないでください。
29 コンテキスト コードです。 ALT キーが下がっているときにキーが離されると、値は 1 です。キーボード フォーカスがあるウィンドウがないため、WM_SYSKEYUP メッセージが作業中のウィンドウに投稿されます。
30 以前のキーの状態です。 WM_SYSKEYUP メッセージの値は常に 1 です。
31 遷移の状態です。 WM_SYSKEYUP メッセージの値は常に 1 です。

詳細については、「キーストローク メッセージ フラグ」を参照してください。

戻り値

アプリケーションでこのメッセージを処理する場合は、0 を返す必要があります。

解説

F10 キーまたは Alt キーを離した場合は、DefWindowProc 関数から最上位ウィンドウに WM_SYSCOMMAND メッセージが送信されます。 メッセージの wParam パラメーターは、SC_KEYMENU に設定されます。

コンテキスト コードが 0 の場合、メッセージを TranslateAccelerator 関数に渡すことができるため、文字キー メッセージではなく通常のキー メッセージであるかのように処理されます。 これにより、作業中のウィンドウにキーボード フォーカスがない場合でも、作業中のウィンドウでアクセラレータ キーを使用できます。

拡張 101 キーと 102 キーのキーボードの場合、拡張キーは、キーボードのメイン セクションの右側の Alt キーと Ctrl キー、テンキーの左側にまとめて配置されている INS キー、DEL キー、HOME キー、END キー、PAGE UP キー、PAGE DOWN キー、矢印キー、およびテンキーの除算 (/) キーと ENTER キーです。 他のキーボードは、lParam パラメーターで拡張キー ビットをサポートしている場合があります。

米国以外の拡張 102 キー キーボードの場合、右 Alt キーは Ctrl + Alt キーとして処理されます。 次の表は、ユーザーがこのキーを押して離すと発生するメッセージのシーケンスを示しています。

Message 仮想キー コード
WM_KEYDOWN VK_CONTROL
WM_KEYDOWN VK_MENU
WM_KEYUP VK_CONTROL
WM_SYSKEYUP VK_MENU

必要条件

要件
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Winuser.h (Windows.h を含む)

関連項目