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 は、ウィンドウのハンドルでなければなりません |