'scrollbar'에 해당되는 글 1건

  1. 2007.10.17 ScrollBar

ScrollBar

API Reference 2007. 10. 17. 11:01

스크롤 바는 "scrollbar" 윈도우 클래스로 생성하며 수평 스크롤 바일 경우 SBS_HORZ 스타일을, 수직 스크롤 바일 경우는 SBS_VERT 스타일을 지정한다.

스크롤 바는 범위와 현재 위치값을 가지는데 다음 두 함수로 이 값들을 지정한다.


BOOL SetScrollRange( HWND hWnd, int nBar, int nMinPos, int nMaxPos, BOOL bRedraw );


int SetScrollPos( HWND hWnd, int nBar, int nPos, BOOL bRedraw );



SetScrollRange 함수로 최대값( nMaxPos ), 최소값( nMinPos )을 지정하되 첫 번째 인수가 스크롤 바의 윈도우 핸들이다. 두 번째 인수 nBar 는 메인 윈도우에 부착된 표준 스크롤 바 또는 별도의 스크롤 바 컨트롤을 지정하는데 이 값이 SB_CTL 이면 별도의 컨트롤을 지정한다.


SetScrollPos 는 스크롤 바의 현재 위치를 세 번째 인수 nPos 로 지정한다.



다른 컨트롤들은 자신에게 변화가 있을 때 부모 윈도우로 WM_COMMAND 통지 메시지를 보내는데 비해 스크롤 바는 WM_HSCROLL( 수평일 경우 ), WM_VSCROLL( 수직일 경우 ) 이라는 별도의 메시지를 부모 윈도우로 보낸다. 이 메시지들은 단순한 사건의 발생뿐만 아니라 스크롤 상태에 대한 다음과 같은 추가 정보를 같이 보내야 하는데 WM_COMMAND 의 파라미터는 이미 용도가 예약되어 있으므로 이 정보를 보낼 수 없다.


LOWORD( wParam )

스크롤 바 내의 어디를 눌렀는가?


HIWORD( wParam )

현재 위치


lParam

스크롤 바의 윈도우 핸들



LOWORD( wParam ) 으로 전달되는 값은 사용자의 스크롤 요구사항을 나타내며 가능한 값의 종류는 다음과 같다.


SB_LINELEFT, SB_LINEUP

사용자가 왼쪽 화살표 버튼을 눌렀다는 뜻이며 이때는 왼쪽으로 한 단위 스크롤시킨다.


SB_LINERIGHT, SB_LINEDOWN

사용자가 오른쪽 화살표 버튼을 눌렀다는 뜻이며 이때는 오른쪽으로 한 단위 스크롤시킨다.


SB_PAGELEFT, SB_PAGEUP

사용자가 왼쪽 몸통 부분을 눌렀다는 뜻이며 이때는 한 페이지 왼쪽으로 스크롤시킨다.


SB_PAGERIGHT, SB_PAGEDOWN

사용자가 오른쪽 몸통 부분을 눌렀다는 뜻이며 이때는 한 페이지 오른쪽으로 스크롤시킨다.


SB_THUMBPOSITION

스크롤 박스를 드래그한 후 마우스 버튼을 놓았다.


SB_THUMBTRACK

스크롤 박스를 드래그하고 있는 중이다. 이 메시지는 마우스 버튼을 놓을 때까지 계속 전달된다.

Posted by 명혀니
,