【转】滚动条消息(WM_VSCROLL和WM_HSCROLL)
轉自:https://blog.csdn.net/zmq5411/article/details/6756189
(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 //獲取滾動條當前位置 |
總結
以上是生活随笔為你收集整理的【转】滚动条消息(WM_VSCROLL和WM_HSCROLL)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 业绩比较基准怎么算收益?看完就明白了!
- 下一篇: 信用卡可以在支付宝上交电费吗