滚动条大家都很熟悉,两头两个箭头,中间的有个划块。创建滚动条后,你的程序要和windows一起负起让滚动条正常工作的责任了。
windows的责任:鼠标在滚动条上的任何操作都产生消息。用户拖动的划块的时候,让划块随着鼠标移动。把消息发送给对应窗口的窗口过程。
用户程序的责任:初始化滚动条的范围和位置。在窗口过程中处理滚动条消息。更新划块位置。更新客户区的内容。
鼠标在滚动条上上点击或拖动都会产生WM_VSCROLL或WM_HSCROLL分别对应垂直滚动条和水平滚动条。滚动条上的任何鼠标操作都至少产生两个消息,一个是当鼠标按下时,一个是当鼠标松开时。在WM_VSCROLL和WM_HSCROLL消息中的wParam和lParam参数中,我们一般只要看wParam就可以了。wParam的低字里面的一个数字,称为“通知码”SB_,表示执行了什么鼠标操作。当鼠标放在划块上拖动时,产生 SB_THUMBTRACK和SB_THUMBPOSITION消息。当低字是SB_THUMBTRACK时,wParam的高字是划块当前位置。低字是SB_THUMBPOSITION时,高字是鼠标松开时划块的最终位置。对于其他的划块操作,wParam高字可以忽略掉。如果你不处理SB_THUMBTRACK和SB_THUMBPOSITION消息,那么鼠标松开后,划块自动弹回原处。