標準スクロール バーのキーボード インターフェイスを作成する方法

スクロール バー コントロールには組み込みのキーボード インターフェイスが用意されていますが、標準のスクロール バーでは提供されません。 標準のスクロール バー用にキーボード インターフェイスを実装するには、ウィンドウ プロシージャで WM_KEYDOWN メッセージを処理し、wParam パラメーターで指定された仮想キー コードを調べる必要があります。 仮想キー コードが方向キーに対応している場合は、ウィンドウ プロシージャは、wParam パラメーターの下位ワードを適切なスクロール バー要求コードに設定した WM_HSCROLL メッセージまたは WM_VSCROLL メッセージをプロシージャ自身に送信します。

たとえば、ユーザーが上方向キーを押すと、ウィンドウ プロシージャは、wParam が VK_UP に設定された WM_KEYDOWN メッセージを受信します。 それに応答して、ウィンドウ プロシージャは、wParam の下位ワードが SB_LINEUP 要求コードに設定された WM_VSCROLL メッセージをそれ自体に送信します。

知っておくべきこと

テクノロジ

前提条件

  • C/C++
  • Windows ユーザー インターフェイス プログラミング

手順

標準スクロール バーのキーボード インターフェイスを作成する

次のコード例は、標準のスクロール バー用のキーボード インターフェイスを含める方法を示しています。

    case WM_KEYDOWN: 
    {
        WORD wScrollNotify = 0xFFFF;

        switch (wParam) 
        { 
            case VK_UP: 
                wScrollNotify = SB_LINEUP; 
                break; 
 
            case VK_PRIOR: 
                wScrollNotify = SB_PAGEUP; 
                break; 
 
            case VK_NEXT: 
                wScrollNotify = SB_PAGEDOWN; 
                break; 
 
            case VK_DOWN: 
                wScrollNotify = SB_LINEDOWN; 
                break; 
 
            case VK_HOME: 
                wScrollNotify = SB_TOP; 
                break; 
 
            case VK_END: 
                wScrollNotify = SB_BOTTOM; 
                break; 
        } 
 
        if (wScrollNotify != -1) 
            SendMessage(hwnd, WM_VSCROLL, MAKELONG(wScrollNotify, 0), 0L); 
 
        break; 
    }

スクロール バーの使用

Windows コモン コントロールのデモ (CppWindowsCommonControls)