(1)當用戶單擊滾動條或者是拖動滑塊時,Windows會向窗口過程發送WM_VSCROLL消息(垂直滾動時)或者是WM_HSCROLL消息(水平滾動時)。在滾動條上的任何鼠標動作會產生兩條消息:一條是在鼠標鍵按下時,另一條是在鼠標鍵鬆開時。
(2)和其他的消息一樣,WM_VSCROLL和WM_HSCROLL消息也都伴隨着wParam和lParam消息參數。當滾動條是窗口的一部分時可以忽略lParam參數(該參數只用於滾動條是子窗口時,通常是在對話框中)。
(3)wParam參數被分爲低位字和高位字。低位字代表了鼠標在滾動條上的動作。這個值被稱爲“通知碼”,是有一個以SB開頭的標識符(SB代表滾動條)定義。定義如下:
#define SB_LINEUP 0
#define SB_LINELEFT 0
#define SB_LINEDOWN 1
#define SB_LINERIGHT 1
#define SB_PAGEUP 2
#define SB_PAGELEFT 2
#define SB_PAGEDOWN 3
#define SB_PAGERIGHT 3
#define SB_THUMBPOSITION 4
#define SB_THUMBTRACK 5
#define SB_TOP 6
#define SB_LEFT 6
#define SB_BOTTOM 7
#define SB_RIGHT 7
#define SB_ENDSCROLL 8
(4)如果在滾動條的不同部分按住鼠標鍵不放,程序可能收到多條滾動條消息。當鬆開鼠標鍵時程序會收到一條帶有SB_ENDSCROLL通知碼的消息。程序通常可以忽略帶SB_ENDSCROLL的消息。Windows不會自己改變滑塊的位置,應用程序需要調用SetScrollPos函數來改變它。
(5)將鼠標放在滑塊上然後按下鼠標鍵時,可以移動滑塊。這將會生成帶SB_THUMBTRACK和THUMBPOSITION通知碼的滾動條消息。當wParam的低位字是SB_THUMBTRACK時,wParam的高位字是用戶拖動滑塊的當前位置。該位置處於滾動條範圍的最大值和最小值之間。當wParam的低位字是SB_THUMBPOSITION時,wParam的高位字是用戶鬆開鼠標鍵時滑塊的最終位置。對於其他的滾動條動作,wParam的高位字應被忽略。