QQ登录

只需一步,快速开始

搜索
【活动】边做笔记边学习,还能赢取奖学金!
查看: 94|回复: 0

[学习笔记] 《Windows SDK》013 滚动条2

[复制链接]
累计签到:49 天
连续签到:25 天
最佳答案
3 
发表于 2017-7-14 17:32:31 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 BngThea 于 2017-7-15 10:01 编辑

一 核心知识点
* 滚动条需要Windows和程序员一起维护
Windows会负责处理滚动条中的鼠标消息,滑块移动,及窗口过程的滚动条消息
程序员负责滚动条初始化,滚动条消息对应的处理方式

* 滚动条相关函数
用 SetScrollRange 和 GetScrollRange 来设置或获取滚动条的范围
用 SetScrollPos 和 GetScrollPos 来设置或获取滚动条的当前位置

* 在处理滚动条消息时,需要间接使窗口重绘
一般可以使用 InvalidateRect 函数来使窗口失效,然后用UpdateWindow直接更新窗口

二 新API函数
* SetScrollRange(hwnd, SB_VERT, 20, 100, FALSE)
该函数用来指定滚动条范围的极值

第一个参数:当前窗口句柄
第二个参数:滚动条类型,竖直为SB_VERT,水平为SB_HERT
第三四个参数:可滚动位置的极值
第五个参数:是否重绘,一般为false

将第三四个参数设置为同一个值,可以隐藏滚动条

如果设置滚动条位置后立马调用该函数,则第五个参数必须设置为FALSE以防止被重绘两次

* GetScrollRange(hwnd, SB_VERT, lpMinPos, lpMaxPos)
该函数将获得滚动条的滚动范围,并将其搁在第三四个参数中
前两个参数含义同SetScrollRange

* SetScrollPos(hwnd, SB_VERT, 20, TRUE)
该函数用来指定滚动条当前的位置

第一个参数:当前窗口句柄
第二个参数:滚动条类型,竖直为SB_VERT,水平为SB_HERT
第三个参数:指定滚动条位置,必须出入有效范围内
第四个参数:是否重绘,一般为false

* GetScrollPos(hwnd, SB_VERT)
该函数用来获得指定滑块的当前位置
第一个参数:当前窗口句柄
第二个参数:滚动条类型,竖直为SB_VERT,水平为SB_HERT
返回值即所需位置

* InvalidateRect(hwnd, NULL, TRUE)
该函数向指定的窗口更新区域添加一个矩形,这部分区域将被重绘

第一个参数:当前窗口句柄
第二个参数:指向RECT结构的指针,一般为NULL,表示重绘整个窗口
第三个参数:是否重绘其背景,为TURE时在调用BeginPaint函数是重绘背景

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
小甲鱼 + 5 + 5 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

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

本版积分规则

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

© 2010-2017 FishC.com GMT+8, 2017-7-28 12:28 Powered by Discuz! X2.5 Theme by dreambred

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