今天分析了以前的一段自绘 滚动条的代码, 终于明白了滚动条的细节。

对于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相关推荐

  1. 滚动条 实现的细节代码 SCROLLINFO

    今天分析了以前的一段自绘 滚动条的代码, 终于明白了滚动条的细节. 对于Edit 来说 SCROLLINFO si1; si1.nMin:0, si1.nMax:14, si1.nPage:6, si ...

  2. OpenCV播放视频-----滚动条随着视频播放移动代码

    学习OpenCV,使用highGUI工具包实现视频的播放控制,使滚动条随着视频播放移动 代码如下: #include "highgui.h" #include "dire ...

  3. python tqdm 不换行_python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)

    默认的tqdm的滚动条的宽度很大,所以会使得总长度超过窗口一行所能显示的量,所以发生上下滚动 解决方法:初始化tqdm时,初始化行数参数ncols=10,这个值可以自己调:尽量大到不能引起上下滚动,同 ...

  4. js获取window窗口高度(页面滚动条可滚动高度) - 代码篇

    js中获取窗口高度的方法 取窗口滚动条滚动高度 (如下文 · 截图) 一. javascript 和 jquery代码: //原生 javascript 代码: let scrollHeight = ...

  5. html滚动条颜色代码,设置div滚动条颜色的css代码

    这篇文章我们来给大家介绍一下设置p滚动条颜色的css代码. 这里是你要显示的内容 SCROLLBAR-FACE-COLOR(立体滚动条凸出部分的颜色) SCROLLBAR-HIGHLIGHT-COLO ...

  6. 滚动html颜色,DIV 自动滚动功能及滚动条颜色修改的代码

    废话不多说了,直接给大家贴代码了.具体代码如下所示: 1.DIV 自动滚动 function startmarquee(lh, speed, delay) { var t; var oHeight = ...

  7. html5中如何使图片滚动条,如何使RMarkdown代码块中出现垂直滚动条(html视图)

    我发现了许多示例,概述了如何将水平滚动条添加到R Markdown HTML输出,包括此特定示例 here.但是,没有描述如何添加垂直滚动条的示例.再次借用链接的示例,但将宽矩阵转换为"高& ...

  8. html背景图片随鼠标滚动条,博客音效代码、滚动条代码、单张图片滚动代码、背景图片代码、个性鼠标(2)...

    [99补]隐形博客音效代码 一句代码直接插入,比你从任何地方看到的都要简单: dynsrc=http://www.smartclub.com.cn/smart_sms/music/male/hktk. ...

  9. el图片滚动_element的el-table中记录滚动条位置的示例代码

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. 深度学习下的医学图像分析 2
  2. 面试精讲之面试考点及大厂真题 - 分布式专栏 04 谈谈你对分布式的理解,为什么引入分布式?
  3. python 回归去掉共线性_线性回归中的多重共线性与岭回归
  4. 小白转前端,学习哪些知识点才能不走弯路?
  5. string能存多大数据_信息技术助力精准教学:大数据到底有多好用?
  6. 英国科研学术网络Janet遭遇DDoS攻击
  7. 软硬件兼容性问题学习笔记
  8. XE5 搭建DataSnap服务
  9. 数据结构/图论:最小生成树问题
  10. [Django]模型提高部分--聚合(group by)和条件表达式+数据库函数
  11. ArcGIS分享: 地图分幅及编号
  12. GoEasy使用方法记录
  13. 【Android应用】 九宫格日志
  14. 2022年阿里云域名备案流程亲测及注意事项
  15. ZEMAX | 使用 ZPL 宏进行优化:ZPLM 操作数
  16. 史上最详细的PID教程——理解PID原理及优化算法
  17. 在网页中嵌入QQ聊天、阿里旺旺聊天、邮件发送等代码
  18. Kaggle TMDB 票房预测挑战赛
  19. python中的values函数_Pandas之排序函数sort_values()的实现
  20. angular快速入门教程

热门文章

  1. Cortex-M3的时钟
  2. 阿里年薪50WJAVA工程师转大数据学习路线!
  3. VSCode(Visual Studio Code) 在Python中,自动提示函数选中后带括号设置
  4. 全国计算机电脑系统有问题吗,笔记本重装系统对电脑有影响吗
  5. 哔咔官网打不开显示黑屏?
  6. 单纯形法和单纯形表法
  7. 中控打卡机二次开发注册控件问题
  8. Idea 打包JAVA项目
  9. WebRTC 之 SDP
  10. 痛苦的事, 伤心的事, 一生只需要一次, 别折腾, 别忘痛- 人生, 软件, 所有人皆如是!...