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 関数によって内部フラグが設定されます。 DefWindowProcWM_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 [デスクトップ アプリのみ]
ヘッダー
Winuser.h (Windows.h を含む)

関連項目