スクロール バーを作成する方法

オーバーラップ ウィンドウ、ポップアップ ウィンドウ、または子ウィンドウを作成するときに、CreateWindowEx 関数を使用し、WS_HSCROLL スタイル、WS_VSCROLL スタイル、またはその両方のスタイルを指定することで、標準のスクロール バーを追加できます。

知っておくべきこと

テクノロジ

前提条件

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

手順

スクロール バーを作成する

次の例では、標準の水平スクロール バーと垂直スクロール バーを含むウィンドウを作成します。

    hwnd = CreateWindowEx( 
        0,                     // no extended styles 
        g_szWindowClass,       // global string containing name of window class
        g_szTitle,             // global string containing title bar text 
        WS_OVERLAPPEDWINDOW |  
            WS_HSCROLL | WS_VSCROLL, // window styles 
        CW_USEDEFAULT,         // default horizontal position 
        CW_USEDEFAULT,         // default vertical position 
        CW_USEDEFAULT,         // default width 
        CW_USEDEFAULT,         // default height 
        (HWND) NULL,           // no parent for overlapped windows 
        (HMENU) NULL,          // use the window class menu 
        g_hInst,               // global instance handle  
        (PVOID) NULL           // pointer not needed 
    ); 

これらのスクロール バーのスクロール バー メッセージを処理するには、メイン ウィンドウ プロシージャに適切なコードを含める必要があります。

CreateWindowEx 関数を使用して、SCROLLBAR ウィンドウ クラスを指定することで、スクロール バーを作成できます。 これにより、ウィンドウ スタイルとして SBS_HORZSBS_VERT のどちらが指定されたかに応じて、水平スクロール バーまたは垂直スクロール バーが作成されます。 スクロール バーのサイズと、親ウィンドウに対する相対位置も指定できます。

次の例では、親ウィンドウのクライアント領域の最下部に沿って水平スクロール バーを作成します。

// Description:
//   Creates a horizontal scroll bar along the bottom of the parent 
//   window's area.
// Parameters:
//   hwndParent - handle to the parent window.
//   sbHeight - height, in pixels, of the scroll bar.
// Returns:
//   The handle to the scroll bar.
HWND CreateAHorizontalScrollBar(HWND hwndParent, int sbHeight)
{
    RECT rect;

    // Get the dimensions of the parent window's client area;
    if (!GetClientRect(hwndParent, &rect))
        return NULL;

    // Create the scroll bar.
    return (CreateWindowEx( 
            0,                      // no extended styles 
            L"SCROLLBAR",           // scroll bar control class 
            (PTSTR) NULL,           // no window text 
            WS_CHILD | WS_VISIBLE   // window styles  
                | SBS_HORZ,         // horizontal scroll bar style 
            rect.left,              // horizontal position 
            rect.bottom - sbHeight, // vertical position 
            rect.right,             // width of the scroll bar 
            sbHeight,               // height of the scroll bar
            hwndParent,             // handle to main window 
            (HMENU) NULL,           // no menu 
            g_hInst,                // instance owning this window 
            (PVOID) NULL            // pointer not needed 
        )); 
}

スクロール バーの使用

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