QQ登录

只需一步,快速开始

搜索
查看: 149|回复: 0

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

[复制链接]
最佳答案
24 
累计签到:125 天
连续签到:26 天
发表于 2017-7-15 21:06:19 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

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

查看全部评分

本帖被以下淘专辑推荐:

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-10-19 20:43 Powered by Discuz! X2.5 Theme by dreambred

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