GetScrollInfo 関数 (winuser.h)
GetScrollInfo 関数は、スクロール バーのパラメーター (スクロールの最小位置と最大位置、ページ サイズ、スクロール ボックスの位置 (thumb) を含む) を取得します。
構文
BOOL GetScrollInfo(
[in] HWND hwnd,
[in] int nBar,
[in, out] LPSCROLLINFO lpsi
);
パラメーター
[in] hwnd
種類: HWND
fnBar パラメーターの値に応じて、スクロール バー コントロールまたは標準のスクロール バーを持つウィンドウにハンドルします。
[in] nBar
型: int
パラメーターを取得するスクロール バーの種類を指定します。 このパラメーターには、次の値のいずれかを指定できます。
値 | 意味 |
---|---|
|
スクロール バー コントロールのパラメーターを取得します。 hwnd パラメーターは、スクロール バー コントロールのハンドルである必要があります。 |
|
ウィンドウの標準的な水平スクロール バーのパラメーターを取得します。 |
|
ウィンドウの標準的な垂直スクロール バーのパラメーターを取得します。 |
[in, out] lpsi
種類: LPSCROLLINFO
SCROLLINFO 構造体へのポインター。 GetScrollInfo を呼び出す前に、cbSize メンバーを sizeof(SCROLLINFO) に設定し、fMask メンバーを設定して、取得するスクロール バー パラメーターを指定します。 を返す前に、関数は指定したパラメーターを構造体の適切なメンバーにコピーします。
fMask メンバーには、次の 1 つ以上の値を指定できます。
値 | 意味 |
---|---|
|
lpsi が指す SCROLLINFO 構造体の nPage メンバーにスクロール ページをコピーします。 |
|
lpsi が指す SCROLLINFO 構造体の nPos メンバーにスクロール位置をコピーします。 |
|
lpsi が指す SCROLLINFO 構造体の nMin および nMax メンバーにスクロール範囲をコピーします。 |
|
現在のスクロール ボックス追跡位置を、lpsi が指す SCROLLINFO 構造体の nTrackPos メンバーにコピーします。 |
戻り値
種類: BOOL
関数が値を取得した場合、戻り値は 0 以外になります。
関数が値を取得しない場合、戻り値は 0 になります。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
GetScrollInfo 関数を使用すると、アプリケーションで 32 ビットのスクロール位置を使用できます。 スクロール バーの位置( WM_HSCROLL と WM_VSCROLL)を示すメッセージは、16 ビットの位置データのみを提供しますが、 関数 SetScrollInfo と GetScrollInfo は 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で導入) |
関連項目
参照