WM_KEYDOWN メッセージ
システム以外のキーが押されたときに、キーボード フォーカスを使用してウィンドウにポストされます。 非システム キーは、Alt キーが押されていないときに押されるキーです。
#define WM_KEYDOWN 0x0100
-
wParam
-
非システム キーの仮想キー コード。 「仮想キー コード」を参照してください。
-
lParam
-
次に示すように、繰り返し数、スキャン コード、拡張キー フラグ、コンテキスト コード、前のキー状態フラグ、および遷移状態フラグ。
Bits 説明 0-15 現在のメッセージの繰り返し数。 値は、ユーザーがキーを押した結果としてキーストロークが自動レプリケートされる回数です。 キーストロークが十分に長く保持されている場合は、複数のメッセージが送信されます。 ただし、繰り返し数は累積されません。 16-23 スキャン コード。 値は OEM によって異なります。 24 キーが拡張キー (拡張 101 キーまたは 102 キー キーボードに表示される右側の Alt キーや Ctrl キーなど) であるかどうかを示します。 拡張キーの場合、値は 1 です。それ以外の場合は 0 です。 25-28 予約;は使用しません。 29 コンテキスト コード。 WM_KEYDOWN メッセージの値は常に 0 です。 30 前のキーの状態。 メッセージが送信される前にキーがダウンしている場合は 1、キーがアップしている場合は 0 です。 31 遷移の状態。 WM_KEYDOWN メッセージの値は常に 0 です。 詳細については、「 キーストローク メッセージ フラグ」を参照してください。
このメッセージを処理する場合、アプリケーションは 0 を返す必要があります。
LRESULT CALLBACK HostWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_KEYDOWN:
if (wParam == VK_ESCAPE)
{
if (isFullScreen)
{
GoPartialScreen();
}
}
break;
// ...
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
GitHub 上の Windows クラシック サンプルからの例。
F10 キーを押すと、 DefWindowProc 関数によって内部フラグが設定されます。 DefWindowProc がWM_KEYUP メッセージを受信すると、関数は内部フラグが設定されているかどうかを確認し、設定されている場合は、最上位ウィンドウにWM_SYSCOMMANDメッセージを送信します。 メッセージの WM_SYSCOMMAND パラメーターは SC_KEYMENU に設定されます。
自動レプリケート機能により、WM_KEYUP メッセージ が 投稿される前に、複数 のWM_KEYDOWN メッセージが投稿される場合があります。 前のキー状態 (ビット 30) を使用して、 WM_KEYDOWN メッセージが最初のダウン遷移を示すか、または繰り返しダウン遷移を示しているかを判断できます。
拡張された 101 キーと 102 キーのキーボードの場合、拡張キーは、キーボードのメインセクションの右 Alt キーと Ctrl キーです。また、クラスター内の INS、DEL、HOME、END、PAGE UP、PAGE DOWN、および方向キーはテンキーの左側、テンキーの除算 (/) キーと ENTER キーです。 他のキーボードでは、 lParam パラメーターの拡張キー ビットがサポートされている場合があります。
アプリケーションでは、wParam を変更せずに TranslateMessage に渡す必要があります。
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー |
|