小甲鱼 发表于 2014-8-7 15:02:09

SCROLLINFO 结构

SCROLLINFO 结构

SetScrollInfo 函数通过 SCROLLINFO 结构设置滚动条参数(或者 SBM_SETSCROLLINFO 消息),GetScrollInfo 函数也通过 SCROLLINFO 结构获得滚动条参数(或者 SBM_GETSCROLLINFO 消息)。


结构原型:

typedef struct tagSCROLLINFO {
UINT cbSize;
UINT fMask;
intnMin;
intnMax;
UINT nPage;
intnPos;
intnTrackPos;
} SCROLLINFO, *LPCSCROLLINFO;

成员解析:


成员 含义
cbSize 1. 该结构的大小(以字节为单位)
2. 通常使用 sizeof(SCROLLINFO) 获得
fMask 指定被设置或获取的滚动条参数,该参数可以由下列标志组成:
1. SIF_ALL:相当于 SIF_PAGE | SIF_POS | SIF_RANGE | SIF_TRACKPOS
2. SIF_DISABLENOSCROLL:如果当前窗口不需要滚动条时,禁用滚动条取代隐藏滚动条(该标志只用于 SetScrollInfo 函数中)
3. SIF_PAGE:指出需要设置或获取页面的大小到 nPage 中(如果不希望滑块大小发生变化,则不要设置此标志)
4. SIF_POS:指出需要设置或获取滚动条滑块的位置到 nPos 中
5. SIF_RANGE:指出需要在 nMin 和 nMax 设置或获取范围的最小值和最大值
6. SIF_TRACKPOS:指出当 WM_VSCROLL 或 WM_HSCROLL 消息的通知码为 SB_THUMBTRACK 或 SB_THUMBPOSITION 时,返回当前滑块的位置到 nTrackPos(该标志只用在 GetScrollInfo 函数中,并且该值为一个 32 位整数)
nMin 滚动条范围的最小值
nMax 滚动条范围的最大值
nPage 页面的大小,滚动条通过这个值来动态确定滑块的大小
nPos 滑块的位置
nTrackPos 当前滑块的位置

如在使用上有任何不同,可以参考小甲鱼的《Windows程序设计(SDK)》第 14 讲:滚动条3


【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。

WinSDK

liyong2003 发表于 2015-1-2 09:48:51

关于小甲鱼 windows 编程第14课的问题
1. 为何要 si.cbSize = sizeof(si);
2. ScrollBar 中的消息,
SB_LINEUP
SB_LINEDOWN
每动一个 line 是多少呢?是像素为单位,还是其它?

零度C 发表于 2015-1-2 10:35:17

liyong2003 发表于 2015-1-2 09:48
关于小甲鱼 windows 编程第14课的问题
1. 为何要 si.cbSize = sizeof(si);
2. ScrollBar 中的消息,


{:9_240:}si.nPos+=1或si.nPos-=1;si.nPos 只是nMinnMax 之间的一个值,通过它的值就可以来设置滚动条的新位置。这么理解不知道对不对,我也是刚学到这。

liyong2003 发表于 2015-1-2 14:18:16

si.nPos 是结构体中的变化,我是问系统会移多少,系统移多少是根据什么来决定的。

谦虚求学 发表于 2016-10-24 11:36:09

{:5_95:}

淡蓝色的夏 发表于 2016-12-18 10:20:40

liyong2003 发表于 2015-1-2 09:48
关于小甲鱼 windows 编程第14课的问题
1. 为何要 si.cbSize = sizeof(si);
2. ScrollBar 中的消息,


......

Siryag 发表于 2017-1-31 13:47:09

liyong2003 发表于 2015-1-2 09:48
关于小甲鱼 windows 编程第14课的问题
1. 为何要 si.cbSize = sizeof(si);
2. ScrollBar 中的消息,


每动一行就是+1 或者 -1
这个只是滚动条的一个数值而已
如果你的字符每行示高度是 10 那么你动一行就是   line(滚动条动了多少行)*每行字符的高度或者宽度
新手理解如果有误请指正
页: [1]
查看完整版本: SCROLLINFO 结构