(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的高位字應被忽略。
滾動條範圍位置函數(SetScrollRange、SetScrollPos、GetScrollRange、GetScrollPos) 2010-10-26 15:00
滾動條的範圍是一對整數,預設情況下,滾動條的範圍是0~100。 SetScrollRange(hwnd,iBar,iMin,iMax,bRedraw)這裡的iBar參數要麼是SB_VERT,要麼是SB_HORZ,iMin和iMax分别對應滾動條範圍的最小值和最大值,需要Windows根據新的範圍來重繪滾動條時将bRedraw設為TRUE. SetScrollPos(hwnd,iBar,iPos,bRedraw //指定滑塊在滾動條範圍中的位置。 GetScrollRange // 擷取滾動條目前範圍 GetScrollPos //擷取滾動條目前位置 |