GetScrollInfo 関数 (winuser.h)

GetScrollInfo 関数は、スクロール バーのパラメーター (スクロールの最小位置と最大位置、ページ サイズ、スクロール ボックスの位置 (thumb) を含む) を取得します。

構文

BOOL GetScrollInfo(
  [in]      HWND         hwnd,
  [in]      int          nBar,
  [in, out] LPSCROLLINFO lpsi
);

パラメーター

[in] hwnd

種類: HWND

fnBar パラメーターの値に応じて、スクロール バー コントロールまたは標準のスクロール バーを持つウィンドウにハンドルします。

[in] nBar

型: int

パラメーターを取得するスクロール バーの種類を指定します。 このパラメーターには、次の値のいずれかを指定できます。

意味
SB_CTL
スクロール バー コントロールのパラメーターを取得します。 hwnd パラメーターは、スクロール バー コントロールのハンドルである必要があります。
Sb_horz
ウィンドウの標準的な水平スクロール バーのパラメーターを取得します。
SB_VERT
ウィンドウの標準的な垂直スクロール バーのパラメーターを取得します。

[in, out] lpsi

種類: LPSCROLLINFO

SCROLLINFO 構造体へのポインター。 GetScrollInfo を呼び出す前に、cbSize メンバーを sizeof(SCROLLINFO) に設定し、fMask メンバーを設定して、取得するスクロール バー パラメーターを指定します。 を返す前に、関数は指定したパラメーターを構造体の適切なメンバーにコピーします。

fMask メンバーには、次の 1 つ以上の値を指定できます。

意味
SIF_PAGE
lpsi が指す SCROLLINFO 構造体の nPage メンバーにスクロール ページをコピーします。
SIF_POS
lpsi が指す SCROLLINFO 構造体の nPos メンバーにスクロール位置をコピーします。
SIF_RANGE
lpsi が指す SCROLLINFO 構造体の nMin および nMax メンバーにスクロール範囲をコピーします。
SIF_TRACKPOS
現在のスクロール ボックス追跡位置を、lpsi が指す SCROLLINFO 構造体の nTrackPos メンバーにコピーします。

戻り値

種類: BOOL

関数が値を取得した場合、戻り値は 0 以外になります。

関数が値を取得しない場合、戻り値は 0 になります。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

GetScrollInfo 関数を使用すると、アプリケーションで 32 ビットのスクロール位置を使用できます。 スクロール バーの位置( WM_HSCROLLWM_VSCROLL)を示すメッセージは、16 ビットの位置データのみを提供しますが、 関数 SetScrollInfoGetScrollInfo は 32 ビットのスクロール バー位置データを提供します。 したがって、アプリケーションは、WM_HSCROLLまたはWM_VSCROLLメッセージの処理中に GetScrollInfo を呼び出して、32 ビットのスクロール バー位置データを取得できます。

WM_HSCROLLまたはWM_VSCROLLメッセージのSB_THUMBTRACK要求コード中にスクロール ボックス (thumb) の 32 ビット位置を取得するには、SCROLLINFO 構造体の fMask メンバーのSIF_TRACKPOS値を使用して GetScrollInfo を呼び出します。 関数は、SCROLLINFO 構造体の nTrackPos メンバー内のスクロール ボックスの追跡位置を返します。 これにより、ユーザーがスクロール ボックスを移動するときに、スクロール ボックスの位置を取得できます。 次のサンプル コードは、この手法を示しています。

SCROLLINFO si;
case WM_HSCROLL:
    switch(LOWORD(wparam)) {
        case SB_THUMBTRACK:
          // Initialize SCROLLINFO structure
 
            ZeroMemory(&si, sizeof(si));
            si.cbSize = sizeof(si);
            si.fMask = SIF_TRACKPOS;
 
          // Call GetScrollInfo to get current tracking 
          //    position in si.nTrackPos
 
            if (!GetScrollInfo(hwnd, SB_HORZ, &si) )
                return 1; // GetScrollInfo failed
            break;
        .
        .
        .
    }

fnBar パラメーターがSB_CTLされ、hwnd パラメーターで指定されたウィンドウがシステム スクロール バー コントロールではない場合、システムはSBM_GETSCROLLINFO メッセージをウィンドウに送信してスクロール バー情報を取得します。 これにより、 GetScrollInfo は、スクロール バーを模倣するカスタム コントロールを操作できます。 ウィンドウで SBM_GETSCROLLINFO メッセージが処理されない場合、 GetScrollInfo 関数は失敗します。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll
API セット ext-ms-win-ntuser-misc-l1-2-0 (Windows 8.1で導入)

関連項目

参照

SCROLLINFO

SetScrollInfo

WM_HSCROLL

WM_VSCROLL