스크롤 막대를 만드는 방법
중첩, 팝업 또는 자식 창을 만들 때 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
));
}
관련 항목