天天看點

滾動條消息(WM_VSCROLL和WM_HSCROLL)

(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 //擷取滾動條目前位置

繼續閱讀