鱼C论坛

 找回密码
 立即注册
查看: 2212|回复: 0

[学习笔记] 《Windows SDK》014 滚动条3

[复制链接]
发表于 2017-7-15 21:06:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 BngThea 于 2017-7-17 09:08 编辑

一 核心知识点
* 使用新的API函数来设置和获取滚动条信息
SetScrollInfo = SetScrollRange + SetScrollPos
GetScrollInfo = GetScrollRange + GetScrollPos
新的API函数利用一个结构存放滚动条的信息,使其具有良好的向上和向下的兼容性

* 滚动条信息结构
SCROLLINFO结构是一个典型的Windows开发中的结构,一般用第一个参数存放该结构的大小,然后是该结构涉及的成员列表。

* 将SCROLLINFO结构同Set和Get函数配合使用来灵活处理滚动条的格式



* 滚动条的处理的高效方式
ScrollWindow函数只滚动已显示的内容,未覆盖的地方置为无效,如此一来,只需要在WM_PAINT消息中处理失效区域即可

二 新API函数 和 结构
* SetScrollInfo(hwnd, SB_HORZ, &si, TRUE)
该函数用来设置滚动条的属性,包括位置、范围等

第一个参数:当前窗口句柄
第二个参数:滚动条形态,水平为SB_HORZ,垂直为SB_VERT
第三个参数:滚动条消息结构,存放滚动条所有相关信息
第四个参数:滚动条是否被重绘,True为是,FALSE为否

该函数的返回值为滚动按钮的当前位置


* SetScrollInfo(hwnd, SB_HORZ, &si)
该函数用来设置滚动条的属性,包括位置、范围等

第一个参数:当前窗口句柄
第二个参数:滚动条形态,水平为SB_HORZ,垂直为SB_VERT
第三个参数:滚动条消息结构,存放滚动条所有相关信息

函数需要进行必要的前期工作:完成SCROLLINFO结构中的第一个参数和第二个参数设定

* ScrollWindow(hwnd, 0, iyAmount, NULL, NULL)
该函数用来仅滚动制定窗口的客户区内容

第一个参数:当前窗口句柄
第二三个参数:指定滚动水平和垂直的数值
第四五个参数:均为RECT结构指针,指定要滚动的客户区范围或裁剪区域

未被该函数覆盖的区域不动,该函数只是操作选定的区域,当应用执行WM_PAINT消息时将选定区域和原未操作区域组合一起重绘,所以一般在该函数后面跟上UpdateWindow函数

当向左或向上滚动窗口时,第二三个参数的值应为负数


* SCROLLINFO{UINT cbSize; UINT fMask; int nMin; int nMax; UINT nPage; int nPos; int nTrackPos;}
该结构存放滚动条的所有参数

第一个参数:该结构大小
第二个参数:滚动条信息的格式,由特定的宏组合,可以得到不同的设置
第三四个参数:滚动条范围的极值,此时第二个参数应包含SIF_RANGE
第五个参数:页面大小,此时第二个参数应包含SIF_PAGE
第六个参数:滑块位置, 此时第二个参数应包含SIF_POS
第七个参数:当前滑块位置,此时第二个参数应包含SIF_TRACKPOS



评分

参与人数 1鱼币 +5 收起 理由
小甲鱼 + 5

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 01:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表