スクロール バーを作成する方法
オーバーラップ ウィンドウ、ポップアップ ウィンドウ、または子ウィンドウを作成するときに、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_HORZ と SBS_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
));
}
関連トピック