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