본문
[API]GetScrollPos / SetScrollPos
GetScrollPos => int GetScrollPos(HWND hWnd, int nBar);
설명 : 스크롤 바 컨트롤의 현재 값을 조사한다. 이 값은 스크롤 바 썸의 위치이다. 스크롤 바 메시지인 M_HSCROLL, WM_VSCROLL 메시지는 HIWORD(wParam)으로 현재 위치를 전달해 주기 때문에 16비트 범위의 값 이상을 표현할 수 없지만 이 함수를 사용하면 32비트 범위의 스크롤 값을 조사할 수 있다.
SetScrollPos => int SetScrollPos(HWND hWnd, int nBar, int nPos, BOOL bRedraw);
설명 : 스크롤 바위 현재 위치, 즉 스크롤 바의 값을 설정한다. 통상 이 함수는 WM_HSCROLL, WM_VSCROLL 등의 스크롤 바 메시지 처리 루틴에서 스크롤 바의 위치값을 변경하기 위해 호출한다. 범위를 지정하는 nPos는 32비트의 정수이나 메시지로 전달되는 스크롤 바 위치는 16비트값이기 때문에 위치값은 16비트로 제한된다. 그러나 메시지의 인수를 참조하지 않고 GetScrollInfo 등의 함수로 스크롤 바의 위치를 직접 조사하면 32비트의 스크롤 위치값을 지정할 수도 있다.
인수 설명 :
hWnd : 스크롤 바 컨트롤의 핸들. 이 값의 의미는 두번째 인수 nBar에 따라 달라진다.
nBar : 위치를 설정할 스크롤 바를 지정한다. 다음 세가지 값중의 하나를 가진다.
SB_CTL 별도의 스크롤 바 컨트롤이며 hWnd는 스크롤 바 컨트롤의 핸들을 나타낸다.
SB_HORZ 표준 수평 스크롤 바이며 hWnd는 스크롤 바를 가진 윈도우의 핸들이다. (int 0)
SB_VERT 표준 수직 스크롤 바이며 hWnd는 스크롤 바를 가진 윈도우의 핸들이다. (int 1)
nPos : 스크롤 바위 새로운 위치를 지정한다. 이 위치는 반드시 스크롤 바위 범위내에 있어야 하므로 값을 변경할 때 범위 내부인지를 점검한 후 값을 변경해야 한다.
bRedraw : 위치를 변경한 후 스크롤 바를 다시 그릴 것인지를 지정한다. 실행중에 위치를 변경할 경우 이 값을 TRUE로 지정하여 썸을 다시 그리도록 해 주어야 한다. 그러나 최초 스크롤 바 초기화시에는 다시 그릴 필요가 없으며 또한 실행중에라도 스크롤 바위 범위와 위치를 동시에 변경할 때는 둘 중 한 함수에서만 다시 그리기를 지정하면 된다. 이 경우 통상 SetScrollRange에서만 bRedraw를 TRUE로 설정하며 SetScrollPos의 bRedraw는 FALSE로 지정한다.
출처 : http://www.winapi.co.kr
댓글