滚动框的位置表示为整数;它是相对于滚动条的左侧或上端,具体取决于滚动条是水平还是垂直。该位置必须在滚动范围的最小值和最大值之内。例如,在范围为0到100的滚动条中,位置50位于中间,其余位置沿着滚动条分布均匀。初始范围取决于滚动条。标准滚动条的初始范围为0到100;滚动条控件具有空范围(最小值和最大值都为零),除非在创建控件时提供显式范围。您可以随时更改范围。使用操作系统4.0或更高版本,您可以使用SetScrollInfo功能设置范围值,并使用GetScrollInfo功能来检索当前范围值。在4.0之前的版本中,您可以使用SetScrollRange和GetScrollRange功能。
应用程序通常将滚动范围调整为方便的整数,使滚动框位置变得与要滚动的数据对象相对应的值很容易。例如,如果一个应用程序必须在窗口中显示260行文本文件,一次只能显示16行,则垂直滚动条范围可以设置为1到244。如果滚动框位于位置1,则第一行将位于窗口的顶部。如果滚动框位于位置244,则最后一行(行260)将位于窗口的底部。如果应用程序尝试指定小于或等于最大值的位置值,则使用最小或最大滚动范围值。
在4.0或更高版本中,应用程序可以为滚动条设置页面大小。【页面大小】表示当前大小时可以在所有者窗口的客户区中适合的数据单元数。例如,如果客户端区域可以容纳16行文本,则应用程序将页面大小设置为16。Windows使用页面大小以及滚动轴的滚动范围和长度来设置滚动框的大小。每当包含滚动条的窗口调整大小时,应用程序应调用SetScrollInfo功能来设置页面大小。应用程序可以通过调用发送GetScrollInfo功能来检索当前页面大小。
要在滚动条范围和数据对象之间建立有用的关系,只要数据对象的大小发生变化,应用程序就必须调整范围。
当用户在滚动条中移动滚动框时,滚动条将滚动条的位置报告为滚动范围内的整数。如果位置是最小值,则滚动框位于垂直滚动条的顶部或水平滚动条的左端。如果位置是最大值,则滚动框位于垂直滚动条的底部或水平滚动条的右端。
在4.0或更高版本中,滚动条可以报告的最大值(即最大滚动位置)取决于页面大小。如果滚动条的页面大小大于1,则最大滚动位置小于最大范围值。您可以使用以下公式计算最大滚动位置:
MaxScrollPos = MaxRangeValue - (PageSize - 1)
应用程序必须在滚动条中移动滚动框。虽然用户在滚动条中请求滚动,滚动条不会自动更新滚动条的位置。相反,它将请求传递到父窗口,该窗口必须滚动数据并更新滚动框位置。在4.0或更高版本中,应用程序使用SetScrollInfo功能更新滚动框位置;否则,它使用SetScrollPos功能。因为它控制滚动框移动,所以应用程序可以以对于正在滚动的数据最有效的增量移动滚动框。