GetScrollInfo
函数功能:GetScrollInfo 函数用于获取滚动条的参数,其中包括:滚动范围的最小值和最大值,页面的大小,以及滑块的位置。
API 函数原型:
BOOL GetScrollInfo(
_In_ HWND hwnd,
_In_ int fnBar,
_Inout_LPSCROLLINFO lpsi
);
参数解析:
参数 含义
hwnd 1. 滚动条控件的句柄或带有标准滚动条窗体的句柄
2. 由 fnBar 参数的值确定
fnBar 指定将要设置哪类滚动条的参数:
1. SB_CTL:设置滚动条控件的范围,要求参数 hwnd 必须是滚动条控件的句柄
2. SB_HORZ:设置窗体的标准水平滚动条的范围
3. SB_VERT:设置窗体的标准垂直滚动条的范围
lpsi 1. 指向 SCROLLINFO 结构
2. 在调用 GetScrollInfo 函数前,需先设置 SCROLLINFO 结构中 cbSize 成员以标识结构大小,设置 fMask 成员以说明待获取的滚动条参数
3. 函数返回前,GetScrollInfo 函数拷贝指定的参数给 SCROLLINFO 结构中适当的成员
返回值:
1. 如果函数成功获取滚动条的参数,则返回值是非 0;
2. 如果函数没有获取滚动条的参数,则返回值是 0。
备注:
1. 尽管滚动条消息 WM_HSCROLL 和 WM_VSCROLL 可以通过 HIWORD(wParam) 取得滚动条的位置(当 LOWORD(wParam) 通知码为 SB_THUMBPOSITION 和 SB_THUMBTRACK 的时候),但得到是 16 位的滚动条位置。如果想要得到 32 位的滚动条数据,可以使用 GetScrollInfo 函数。
2. 为了在 WM_HSCROLL 或 WM_VSCROLL 的 SB_THUMBTRACK 通知码中获得滚动条滑块的 32 位的位置,可以通过调用 GetScrollInfo 函数并设置 SCROLLINFO 结构 fMask 成员的值为 SIF_TRACKPOS 实现。GetScrollInfo 函数将滚动条滑块的位置存放在 SCROLLINFO 结构的 nTrackPos 成员中。这将使得用户在移动滑块时你可以及时获得滑块的位置。
【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
示例:
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;
.
.
.
}
如在使用上有任何不同,可以参考小甲鱼的《Windows程序设计(SDK)》第 14 讲:滚动条3
WinSDK 小甲鱼的这个例子来源我找到了
http://msdn.microsoft.com/en-us/library/windows/desktop/bb787583%28v=vs.85%29.aspx
页:
[1]