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的高位字應被忽略


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章