用户通过点击滚动条的各个部分来进行滚动请求。Windows将请求以WM_HSCROLL或WM_VSCROLL消息的形式发送到给定的窗口。水平滚动条发送WM_HSCROLL消息;垂直滚动条发送WM_VSCROLL消息。每个消息包括对应于用户的动作的通知代码,到滚动条的句柄(仅滚动条控制),并且在某些情况下包括滚动框的位置。
下图显示了用户在单击滚动条的各个部分时生成的通知消息。
滚动条通知代码指定用户采取的操作。应用程序会检查WM_HSCROLL和WM_VSCROLL消息附带的代码,然后执行适当的滚动操作。在通知消息的下表中,为每个消息指定用户的操作,然后是应用程序的响应。在每种情况下,应用程序根据给定的数据定义单位。例如,垂直滚动文字的典型单位是一行文字。
通知 信息 | 行动 | 响应 |
SB_LINEUP | 用户单击顶部滚动箭头。 | 减少滚动框位置;以一个单位向数据顶部滚动。 |
SB_LINEDOWN | 用户点击底部滚动箭头。 | 增加滚动条的位置;滚动到数据的底部一个单位。 |
SB_LINELEFT | 用户点击左侧滚动箭头。 | 减少滚动框位置;向数据左端滚动一个单位。 |
SB_LINERIGHT | 用户点击右滚动箭头。 | 增加滚动条的位置;滚动到数据的右端一个单位。 |
SB_PAGEUP | 用户点击滚动条上方的滚动条轴。 | 滚动框位置减去窗口中的数据单位数;以相同数量的单位滚动到数据顶部。 |
SB_PAGEDOWN | 用户点击滚动条下面的滚动条轴。 | 滚动框位置增加窗口中的数据单位数;以相同数量的单位滚动到数据的底部。 |
SB_PAGELEFT | 用户点击滚动条左侧的滚动条轴。 | 滚动框位置减去窗口中的数据单位数;以相同数量的单位向数据左端滚动。 |
SB_PAGERIGHT | 用户点击滚动条右侧的滚动条轴。 | 滚动框位置增加窗口中的数据单位数;以相同数量的单位滚动到数据的右端。 |
SB_THUMBPOSITION | 拖动后,用户释放滚动框。 | 将滚动框设置为消息中给出的位置;以与滚动框移动的相同数量的单位滚动数据。 |
SB_THUMBTRACK | 用户拖动滚动框。 | 将滚动框设置为消息中给出的位置,并以相同数量的单位滚动数据,滚动框已经为快速绘制数据的应用程序移动。无法快速绘制数据的应用程序必须等待SB_THUMBPOSITION消息,才能移动滚动框并滚动数据。 |
SB_ENDSCROLL | 用户将其放在箭头或滚动条轴上后释放鼠标。 | 不需要回应 |
当用户单击并拖动滚动框时,滚动条将生成SB_THUMBPOSITION和SB_THUMBTRACK通知消息。编程应用程序可以处理SB_THUMBTRACK或SB_THUMBPOSITION通知消息。
当用户在点击滚动框后释放鼠标按钮时,会发生SB_THUMBPOSITION通知消息。处理此消息的应用程序在用户将滚动框拖动到所需位置并释放鼠标按钮后执行滚动操作。
随着用户拖动滚动框,SB_THUMBTRACK通知消息发生。如果应用程序处理SB_THUMBTRACK消息,则当用户拖动滚动框时,它可以滚动窗口的内容。但是,滚动条可以在短时间内生成许多SB_THUMBTRACK通知消息,因此只有在应用程序可以快速重新绘制窗口的内容时,才应该处理这些消息。