int SetScrollInfo( HWND hwnd , int fnBar , LPSCROLLINFO lpsi , BOOL fRedraw );hwnd には、ウィンドウのハンドルを指定します
typedef struct tagSCROLLINFO {  // si 
    UINT cbSize; 
    UINT fMask; 
    int  nMin; 
    int  nMax; 
    UINT nPage; 
    int  nPos; 
    int  nTrackPos; 
}   SCROLLINFO;
cbSize には、この構造体のサイズをバイト単位で格納します| 定数 | 解説 | 
|---|---|
| SIF_ALL | SIF_PAGE , SIF_POS SIF_RANGE , と SIF_TRACKPOS の組み合わせ | 
| SIF_DISABLENOSCROLL | この値はスクロールバーの値をセットする時に限り使われる もし、無効なパラメータが指定されても消去せずに使用不能にします SetScrollInfo() 専用 | 
| SIF_PAGE | nPage を設定することを明示します | 
| SIF_POS | nPos を設定することを明示します | 
| SIF_RANGE | nMin と nMax を設定することを明示します | 
| SIF_TRACKPOS | nTrackPos フィールドにつまみの位置をセットすることを明示 GetScrollInfo() 専用 | 
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
	SCROLLINFO scr;
	switch (msg) {
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	case WM_CREATE:
		scr.cbSize = sizeof(SCROLLINFO);
		scr.fMask = SIF_PAGE | SIF_RANGE;
		scr.nMin = 0;
		scr.nMax = 9;
		scr.nPage = 2;
		SetScrollInfo(hwnd , SB_VERT , &scr , TRUE);
		return 0;
	}
	return DefWindowProc(hwnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
			PSTR lpCmdLine , int nCmdShow ) {
	HWND hwnd;
	MSG msg;
	WNDCLASS winc;
	winc.style		= CS_HREDRAW | CS_VREDRAW;
	winc.lpfnWndProc	= WndProc;
	winc.cbClsExtra	= winc.cbWndExtra	= 0;
	winc.hInstance		= hInstance;
	winc.hIcon		= LoadIcon(NULL , IDI_APPLICATION);
	winc.hCursor		= LoadCursor(NULL , IDC_ARROW);
	winc.hbrBackground	= (HBRUSH)GetStockObject(WHITE_BRUSH);
	winc.lpszMenuName	= NULL;
	winc.lpszClassName	= TEXT("KITTY");
	if (!RegisterClass(&winc)) return -1;
	hwnd = CreateWindow(
			TEXT("KITTY") , TEXT("Kitty on your lap") ,
			WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_VSCROLL ,
			CW_USEDEFAULT , CW_USEDEFAULT ,
			CW_USEDEFAULT , CW_USEDEFAULT ,
			NULL , NULL , hInstance , NULL
	);
	if (hwnd == NULL) return -1;
	while(GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg);
	return msg.wParam;
}

| 定数 | 解説 | 
|---|---|
| SB_BOTTOM | 一番下までスクロール | 
| SB_ENDSCROLL | スクロール終了 | 
| SB_LINEDOWN | 1 行下へスクロール | 
| SB_LINEUP | 1 行上へスクロール | 
| SB_PAGEDOWN | 1 ページ下へスクロール | 
| SB_PAGEUP | 1 ページ上へスクロール | 
| SB_LEFT | 左端へスクロール | 
| SB_ENDSCROLL | スクロール終了 | 
| SB_LINELEFT | 左へスクロール | 
| SB_LINERIGHT | 右へスクロール | 
| SB_PAGELEFT | 1 ページ左へスクロール | 
| SB_PAGERIGHT | 1 ページ右へスクロール | 
| SB_RIGHT | 右端へスクロール | 
| SB_THUMBPOSITION | 絶対位置へスクロール | 
| SB_THUMBTRACK | 指定位置へスクロール ボックスをドラッグ | 
| SB_TOP | 一番上までスクロール | 
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
	HDC hdc;
	PAINTSTRUCT ps;
	static SCROLLINFO scr;
	static TCHAR strScroll[32];
	switch (msg) {
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	case WM_CREATE:
		scr.cbSize = sizeof(SCROLLINFO);
		scr.fMask = SIF_PAGE | SIF_RANGE;
		scr.nMin = 0;	scr.nMax = 9;
		scr.nPage = 2;
		SetScrollInfo(hwnd , SB_VERT , &scr , TRUE);
		scr.fMask = SIF_POS;
		return 0;
	case WM_VSCROLL:
		switch(LOWORD(wp)) {
		case SB_TOP:
			scr.nPos = scr.nMin;
			break;
		case SB_BOTTOM:
			scr.nPos = scr.nMax;
			break;
		case SB_LINEUP:
			if (scr.nPos) scr.nPos--;
			break;
		case SB_LINEDOWN:
			if (scr.nPos < scr.nMax - 1) scr.nPos++;
			break;
		case SB_PAGEUP:
			scr.nPos -= scr.nPage;
			break;
		case SB_PAGEDOWN:
			scr.nPos += scr.nPage;
			break;
		case SB_THUMBPOSITION:
			scr.nPos = HIWORD(wp);
			break;
		}
		SetScrollInfo(hwnd , SB_VERT , &scr , TRUE);
		wsprintf(strScroll , "Scroll = %d" , scr.nPos);
		InvalidateRect(hwnd , NULL , TRUE);
		return 0;
	case WM_PAINT:
		hdc = BeginPaint(hwnd , &ps);
		TextOut(hdc , 10 , 10 , strScroll , lstrlen(strScroll));
		EndPaint(hwnd , &ps);
	}
	return DefWindowProc(hwnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
			PSTR lpCmdLine , int nCmdShow ) {
	HWND hwnd;
	MSG msg;
	WNDCLASS winc;
	winc.style		= CS_HREDRAW | CS_VREDRAW;
	winc.lpfnWndProc	= WndProc;
	winc.cbClsExtra	= winc.cbWndExtra	= 0;
	winc.hInstance		= hInstance;
	winc.hIcon		= LoadIcon(NULL , IDI_APPLICATION);
	winc.hCursor		= LoadCursor(NULL , IDC_ARROW);
	winc.hbrBackground	= (HBRUSH)GetStockObject(WHITE_BRUSH);
	winc.lpszMenuName	= NULL;
	winc.lpszClassName	= TEXT("KITTY");
	if (!RegisterClass(&winc)) return -1;
	hwnd = CreateWindow(
			TEXT("KITTY") , TEXT("Kitty on your lap") ,
			WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_VSCROLL ,
			CW_USEDEFAULT , CW_USEDEFAULT ,
			CW_USEDEFAULT , CW_USEDEFAULT ,
			NULL , NULL , hInstance , NULL
	);
	if (hwnd == NULL) return -1;
	while(GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg);
	return msg.wParam;
}

int SetScrollInfo( HWND hwnd , int fnBar , LPSCROLLINFO lpsi , BOOL fRedraw );スクロールバーの情報を設定します
| 定数 | 解説 | 
|---|---|
| SB_CTL | スクロールバーコントロールの情報を設定します hwnd は、スクロールバーコントロールのハンドルでなければなりません | 
| SB_HORZ | 水平スクロールバーの情報を設定します hwnd は、ウィンドウのハンドルでなければなりません | 
| SB_VERT | 垂直スクロールバーの情報を設定します hwnd は、ウィンドウのハンドルでなければなりません | 
| 定数 | 解説 | 
|---|---|
| SB_CTL | スクロールバーコントロールの情報を設定します hwnd は、スクロールバーコントロールのハンドルでなければなりません | 
| SB_HORZ | 水平スクロールバーの情報を設定します hwnd は、ウィンドウのハンドルでなければなりません | 
| SB_VERT | 垂直スクロールバーの情報を設定します hwnd は、ウィンドウのハンドルでなければなりません |