自适应滚动条
为了得到一个自适应滚动条,你需要告诉Windows滚动条所覆盖区域的最大值和最小值,当前滚动条的位置以及滚动条滑块(Thumb,也称”页大小”)的大小。
一个比较麻烦的方法,是当显示区域最大值是可变的情况。这和GDI中的坐标计算有点不同:GDI中,一段范围,是不包含终结点的。这会导致在代码中出现类似”-1″这样的代码,用来对公式做出补偿修正。
为了实现这个目标,我们需要额外定义如下的变量:
我稍后会解释为什么这里的变量名叫做g_yOrigin。
核心代码
接下来,我们会定义一个帮助函数,它将会是滚动条操作的核心。
我们来看看这个函数:它将会接收一个代表滚动条目标位置的参数,然后函数对这个参数进行有效性校验,然后对窗口的内容进行必要的滚动,最后,设置滚动条的相关参数来匹配窗口滚动之后的状态。
有时候,我们仅仅是希望以一个相对的位置进行滚动,则可以使用下面的函数。