滾動控件(ScrollBar)
滾動條(ScrollBar)主要用來從某一預定義值范圍內快速有效地進行選擇。滾動條分垂直滾動條和水平滾動條兩種。在滾動條內有一個滾動框,用來表示當前的值。用鼠標單擊滾動條,可以使滾動框移動一頁,鼠標單擊滾動條兩端的剪頭可以使滾動框移動一行,也可以直接拖動滾動框。許多窗口控件如列表框和組合框等都帶有滾動條子窗口。Win32的滾動條支持比例滾動框,即用滾動框的大小來反映頁相對于整個范圍的大小。
當CreateWindowEx創建滾動條時,其風格常數中帶SBS_VERT為水平滾動條,不帶SBS_VERT或帶SBS_HORZ為垂直滾動條。
創建控件時應初始化滾動條的各種參數。
應用程序可以通過調用SendMessage向控件發送如下消息來設定控件各種參數。
uMsg |
wParam |
lParam |
說明 |
SBM_ENABLE_ARROWS |
ESB_DISABLE_BOTH |
0 |
禁止雙向滾動剪頭 |
ESB_DISABLE_DOWN |
0 |
禁止向下滾動剪頭 |
ESB_DISABLE_LTUP |
0 |
禁止向上和向左滾動剪頭 |
ESB_DISABLE_LEFT |
0 |
禁止向左滾動剪頭 |
ESB_DISABLE_RTDN |
0 |
禁止向下和向右滾動剪頭 |
ESB_DISABLE_UP |
0 |
禁止向上滾動剪頭 |
ESB_ENABLE_BOTH |
0 |
允許雙向滾動剪頭(撤消各種禁止) |
SBM_SETPOS |
指定位置 |
TRUE |
設置滾動框位置,并重繪控件 |
FALSE |
設置滾動框位置,不重繪控件 |
SBM_SETRANGE |
最小值 |
最大值 |
設置滾動框位置的變化范圍 |
SBM_SETRANGEREDRAW |
最小值 |
最大值 |
設置滾動框位置的變化范圍,并重繪控件 |
SBM_SETSCROLLINFO |
TRUE或FALSE |
SCROLLINFO結構指針 |
本消息通過一個SCROLLINFO結構來同時指定控件的多種參數,具體指定哪些參數由結構中的fMask成員確定。wParam指定是否重繪控件,詳見“SCROLLINFO結構” |
當用戶在滾動條控件上進行各種操作時,其父窗口將收到WM_HSCROLL或WM_VSCROLL通知消息,同時wParam的低16位帶有如下表的消息代碼(nScrollCode),wParam的高16位帶滾動框的指定位置(nPos),該值在消息代碼等于SB_THUMBPOSITION或SB_THUMBTRACK時才有效。lParam帶控件句柄(hwndScrollBar)。
應用程序可以根據消息代碼做相應的操作,重新設置滾動框位置,控件本身是不會改變滾動框位置的。
消息代碼 |
動作 |
響應 |
SB_LINEUP SB_LINELEFT |
用戶點擊了向上(左)剪頭 |
滾動框位置減一,客戶窗口向上(左)滾動一行。 注:這兩個代碼數值相等,因此可以混用,下同。 |
SB_LINEDOWN SB_LINERIGHT |
用戶點擊了向下(右)剪頭 |
滾動框位置加一,客戶窗口向下(右)滾動一行。 |
SB_PAGEUP SB_PAGELEFT |
用戶點擊了滾動框以上(左)剪桿 |
滾動框位置減去一個大單位,客戶窗口向上(左)滾動一頁。 |
SB_PAGEDOWN SB_PAGERIGHT |
用戶點擊了滾動框以下(右)剪桿 |
滾動框位置加上一個大單位,客戶窗口向下(右)滾動一頁。 |
SB_THUMBPOSITION |
用戶拖動并釋放滾動框到指定位置 |
設定滾動框到指定位置。客戶窗口滾動到指定位置。 |
SB_THUMBTRACK |
用戶正在拖動滾動框 |
設定滾動框到指定位置。客戶窗口滾動到指定位置。如果應用程序需要快速瀏覽窗口,可以響應本消息重繪窗口,如果不需要快速瀏覽,可以等待收到SB_THUMBPOSITION消息時重繪窗口。 |
SB_ENDSCROLL |
用戶釋放按下剪頭或剪桿的鼠標 |
無須做任何響應 |
應用程序可以通過調用SendMessage向控件發送如下消息來取得當前控件各種參數。
uMsg |
wParam |
lParam |
說明 |
SBM_GETPOS |
0 |
0 |
返回滾動框當前位置。 |
SBM_GETRANGE |
最小值地址指針 |
最大值地址指針 |
在指定地址中填入32位的滾動框位置的變化范圍 |
SBM_GETSCROLLINFO |
0 |
SCROLLINFO結構指針 |
在一個SCROLLINFO結構中返回控件的多種參數,必須事先設定結構的fMask成員來確定具體要取得哪些參數。詳見“SCROLLINFO結構” |
當控件需要重畫時向每父窗口發送WM_CTLCOLORSCROLLBAR消息,同時在wParam中帶控件的設備場景句柄(hDC),lParam中帶控件句柄。如果應用程序響應這個消息并返回一個畫刷(brush)句柄,控件將根據這個句柄繪制背景色。
SCROLLINFO結構:
SCROLLINFO STRUCT
cbSize DWORD ?
fMask DWORD ?
nMin DWORD ?
nMax DWORD ?
nPage DWORD ?
nPos DWORD ?
nTrackPos DWORD ?
SCROLLINFO ENDS
|
成員說明:
cbSize: SCROLLINFO結構長度字節數,該值在設置和查詢參數時都必須填寫。
fMask: 指定結構中的哪些成員是有效,該值共有如下5種選擇,可以選擇多種用“OR”組合起來,該值在設置和查詢參數時都必須填寫。
SIF_ALL :整個結構都有效
SIF_DISABLENOSCROLL:該值僅在設定參數時使用,視控件參數設定的需要來對本結構的成員進行取舍。
SIF_PAGE :nPage成員有效
SIF_POS :nPos成員有效
SIF_RANGE :nMin和nMax成員有效
nMin:滾動范圍最小值
nMax:滾動范圍最大值
nPage:頁尺寸,用來確定比例滾動框的大小
nPos:滾動框的位置
nTrackPos:拖動時滾動框的位置,該參數只能查詢,不能設置。
posted on 2008-07-21 09:57
幽幽 閱讀(1756)
評論(3) 編輯 收藏 引用 所屬分類:
Windows