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