三、Windows编程之滚动条—滚动条的范围和位置

每个滚动条均有一个相关的「范围」(这是一对整数,分别代表最小值和最大值)和「位置」(它是卷动方块在此范围内的位置)。当卷动方块在卷动列的顶部(或左部)时,卷动方块的位置是范围的最小值;在卷动列的底部(或右部)时,卷动方块的位置是范围的最大值。

在内定情况下,滚动条的范围是从0(顶部或左部)至100(底部或右部),但将范围改变为更方便于程序的数值也是很容易的:

SetScrollRange (hwnd, iBar, iMin, iMax, bRedraw) ;
        

参数iBar为SB_VERT或者SB_HORZ,iMin和iMax分别是范围的最小值和最大值。如果想要Windows根据新范围重画滚动条,则设置bRedraw为TRUE(如果在呼叫SetScrollRange后,呼叫了影响滚动条位置的其它函数,则应该将bRedraw设定为FALSE以避免过多的重画)。

卷动方块的位置总是离散的整数值。例如,范围为0至4的滚动条具有5个卷动方块位置,如图4-6所示。

 


您可以使用SetScrollPos在滚动条范围内设置新的卷动方块位置:

SetScrollPos (hwnd, iBar, iPos, bRedraw) ;
        

参数iPos是新位置,它必须在iMin至iMax的范围内。Windows提供了类似的函数(GetScrollRange和GetScrollPos)来取得滚动条的目前范围和位置。

在程序内使用滚动条时,程序写作者与Windows共同负责维护滚动条以及更新卷动方块的位置。下面是Windows对滚动条的处理:

以下是程序写作者应该完成的工作:

像生活中的大多数事情一样,在我们看一些程序代码时这些会显得更加有意义。