SetScrollInfo

원형

int SetScrollInfo(HWND hwnd, int fnBar, LPCSCROLLINFO lpsi, BOOL fRedraw);

MFC 원형

BOOL CWnd::SetScrollInfo( int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE );
BOOL CScrollBar::SetScrollInfo( LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE );

인수

▶hwnd : 스크롤 바 컨트롤의 핸들. 이 값의 의미는 두번째 인수 nBar에 따라 달라진다.

▶fnBar : 위치를 설정할 스크롤 바를 지정한다. 다음 세가지 값중의 하나를 가진다.

설명
SB_CTL 별도의 스크롤 바 컨트롤이며 hWnd는 스크롤 바 컨트롤의 핸들을 나타낸다.
SB_HORZ 표준 수평 스크롤 바이며 hWnd는 스크롤 바를 가진 윈도우의 핸들이다.
SB_VERT 표준 수직 스크롤 바이며 hWnd는 스크롤 바를 가진 윈도우의 핸들이다.

▶lpsi : SCROLLINFO 구조체의 포인터이며 이 구조체로 스크롤 바의 범위, 위치 등을 지정한다.

▶fRedraw : 스크롤 바를 변경한 후 다시 그릴 것인가 아닌가를 지정한다.

리턴

스크롤 바의 현재 위치를 리턴한다.

설명

스크롤 바의 범위와 위치를 설정한다. 이 함수로 범위를 지정하면 페이지 크기를 전달할 수 있으므로 비례 스크롤 바를 만들 수 있다. nPage, nPos 값에 대해 유효한 값인지를 점검하므로 엉뚱한 값이 들어가지 않도록 해 준다. 다음 코드는 ScrollWindow 함수의 예제에서 사용한 코드이다.

case WM_SIZE:
	si.cbSize=sizeof(SCROLLINFO);
	si.fMask=SIF_ALL | SIF_DISABLENOSCROLL;
	si.nMin=0;
	si.nMax=1000;
	si.nPage=HIWORD(lParam);
	si.nPos=yPos;
	SetScrollInfo(hWnd, SB_VERT, &si, TRUE);

	si.nPage=LOWORD(lParam);
	si.nPos=xPos;
	SetScrollInfo(hWnd, SB_HORZ, &si, TRUE);
	return 0;

이 윈도우는 1000*1000의 크기를 가지므로 스크롤 범위도 0~1000으로 설정하였으며 페이지 크기는 윈도우의 폭과 높이로 설정하였다.

참고함수

GetScrollInfo

플랫폼

95이상

참조

 


written by http://www.winapi.co.kr