每个卷动列均有一个相关的「范围」(这是一对整数,分别代表最小值和最大值)和「位置」(它是卷动方块在此范围内的位置)。当卷动方块在卷动列的顶部(或左部)时,卷动方块的位置是范围的最小值;在卷动列的底部(或右部)时,卷动方块的位置是范围的最大值。
在内定情况下,卷动列的范围是从0(顶部或左部)至100(底部或右部),但将范围改变为更方便於程式的数值也是很容易的:
参数iBar为SB_VERT或者SB_HORZ,iMin和iMax分别是范围的最小值和最大值。如果想要Windows根据新范围重画卷动列,则设置bRedraw为TRUE(如果在呼叫SetScrollRange後,呼叫了影响卷动列位置的其他函式,则应该将bRedraw设定为FALSE以避免过多的重画)。
卷动方块的位置总是离散的整数值。例如,范围为0至4的卷动列具有5个卷动方块位置,如图4-6所示。
您可以使用SetScrollPos在卷动列范围内设置新的卷动方块位置:
参数iPos是新位置,它必须在iMin至iMax的范围内。Windows提供了类似的函式(GetScrollRange和GetScrollPos)来取得卷动列的目前范围和位置。
在程式内使用卷动列时,程式写作者与Windows共同负责维护卷动列以及更新卷动方块的位置。下面是Windows对卷动列的处理:
以下是程式写作者应该完成的工作:
像生活中的大多数事情一样,在我们看一些程式码时这些会显得更