datagridview滚动条自动滚动_一个自适应滚动条的实现

本文介绍了如何实现自适应滚动条,特别是在Windows应用中,通过定义相关变量并设置滚动条参数来实现。核心代码包括一个处理滚动位置的函数和消息响应函数。在窗口大小变化时,需要重新计算可显示内容的数量并调整滚动条。同时,文章提出了一个家庭作业,寻找并修复WM_VSCROLL消息处理函数中的潜在Bug。
摘要由CSDN通过智能技术生成

自适应滚动条

为了得到一个自适应滚动条,你需要告诉Windows滚动条所覆盖区域的最大值和最小值,当前滚动条的位置以及滚动条滑块(Thumb,也称”页大小”)的大小。
一个比较麻烦的方法,是当显示区域最大值是可变的情况。这和GDI中的坐标计算有点不同:GDI中,一段范围,是不包含终结点的。这会导致在代码中出现类似”-1″这样的代码,用来对公式做出补偿修正。

为了实现这个目标,我们需要额外定义如下的变量:

a2e71f2dadf649d22cada26504e1b1a5.png

我稍后会解释为什么这里的变量名叫做g_yOrigin。

核心代码

接下来,我们会定义一个帮助函数,它将会是滚动条操作的核心。
我们来看看这个函数:它将会接收一个代表滚动条目标位置的参数,然后函数对这个参数进行有效性校验,然后对窗口的内容进行必要的滚动,最后,设置滚动条的相关参数来匹配窗口滚动之后的状态。

3dd04e0b6e52020712bfa8f7c0be88bd.png

有时候,我们仅仅是希望以一个相对的位置进行滚动,则可以使用下面的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值