滚动条 实现的细节代码 SCROLLINFO
来源:互联网 发布:think php curd join 编辑:程序博客网 时间:2024/05/01 13:06
今天分析了以前的一段自绘 滚动条的代码, 终于明白了滚动条的细节。
对于Edit 来说
SCROLLINFO si1;
si1.nMin:0, si1.nMax:14, si1.nPage:6, si1.nPos:9, si1.nTrackPos:9
例如上面信息:
si1.nMax - si1.nMin + 1
代表编辑框中文字的总行数
si1.nPage:6
编辑框一页可以容纳的行数(在不足一显示页时为当前页中的行数),
一页:在不用滚动条的情况下最多可以显示的行数。编辑框大,可以显示nPage的就大
si1.nPos:9, si1.nTrackPos:9
滚动条把Edit中文本滚过的行数, 每次点击滚动条上下箭头,编辑框滚动1行
假设 nPage=10,
si1.nMax - si1.nMin + 1 = 100
则nPos最大为 100 - 10 = 90, 对于垂直滚动条来说,此时滑块滚到了最底端。
垂直滚动条滑块高度的计算:
si1.nMax - si1.nMin + 1 = 800 编辑框文本总行数
si1.nPage = 100 编辑框最多一页最多容纳 100 行
假设垂直滚动条:
TotalHeight = 100 像素, 上下2个Arrow各 10像素,
则 InterHeight = TotalHeight - HeightOf(Arrow)*2 = 100 -10*2 = 80
ThumbHeight = si1.nPage * InterHeight /(si1.nMax - si1.nMin + 1)
= 100 * 80/(800) = 10 像素
计算滑块的位置:
对于垂直滚动条,计算滑块Thumb的最上端的位置 ThumbPos
EmptyHeight = InterHeight – ThumbHeight
EmptyHeight: 滚动条内空白区域的总高度
InterHeight: 滚动条出去上下箭头的高度
ThumbHeight: 滑块的高度
存在下面比例关系:
si1.nTrackPos/( si1.nMax - si1.nMin + 1 - si1.nPage) = ThumbPos/EmptyHeight;
si1.nMax - si1.nMin + 1 - si1.nPage
需要滚动条滚动才能显示的总行数(对应滚动条的空白区域)
si1.nTrackPos
已经滚动的行数(对应滑块的位置)
则滑块最顶端 ThumbPos = EmptyHeight * si1.nTrackPos/( si1.nMax - si1.nMin + 1 - si1.nPage)
- 滚动条 实现的细节代码 SCROLLINFO
- 滚动条 实现的细节代码 SCROLLINFO
- 滚动条 实现的细节代码 SCROLLINFO
- VC滚动条 SCROLLINFO结构详解
- html表格滚动条的实现代码
- 滚动条的实现;
- 图片随滚动条滚动的代码
- 解决VC滚动条16位限制 tag: 滚动条, OnVScroll, 16位, 32位,SB_THUMBTRACK, SCROLLINFO , nTrackPos
- 滚动条样式实现参考代码
- 实现Ajax的滚动条
- 页面滚动条的实现
- SCROLLINFO结构的使用
- SCROLLINFO结构的使用
- SCROLLINFO结构的使用
- 用图片代替滚动条的代码
- 用图片代替滚动条的代码
- div显示滚动条的css代码
- 加入滚动条的html代码
- 医学图像质量评价方法SSIM
- 分享一些OpenCV实现立体视觉的经验
- 第七讲:Obj-C 协议 Protocol
- 网站提取工具
- 通过api和键盘钩子彻底屏蔽任务栏和开始菜
- 滚动条 实现的细节代码 SCROLLINFO
- Java语言编程必备十大技能
- 第八讲:Obj-C 协议 Delegate 代理设计模式
- c#动态调用WebService
- net的app.config程序配置Spring.net和nhibernate
- Spring MVC 3 深入总结
- 我的Java开发学习之旅------>银行业务调度系统
- 递归法求“1*3*5*7*...*(2*n-1)”
- DELPHI获得系统信息比如系统语言