SYSMETS程式使用視窗捲動列, 它出現在視窗的右邊和底部。您可以在建立視窗時通過將識別字WS_VSCROLL、WS_HSCROLL或者兩者都包含在視窗樣式中,讓視窗加上捲動列。現在我們準備建立一些捲動列控制項,它們是能在父視窗的顯示區域的任何地方出現的子視窗。您可以使用預先定義的視窗類別「scrollbar」以及兩個捲動列樣式SBS_VERT和SBS_HORZ中的一個來建立子視窗捲動列控制項。
基本介紹
- 中文名:捲動列類別
- 外文名:SYSMETS
- 寬度:有固定的寬度
- 位置:出現在視窗的右邊和底部
含義,寬度,
含義
與按鈕控制項(以及將在後面討論的編輯和清單方塊控制項)不同,捲動列控制項不向父視窗傳送WM_COMMAND訊息,而是像視窗捲動列那樣傳送WM_VSCROLL和WM_HSCROLL訊息。在處理捲動訊息時,您可以通過lParam參數來區分視窗捲動列與捲動列控制項。對子視窗捲動列其值為0,對於捲動列控制項其值為捲動列視窗代號。對視窗捲動列和捲動列控制項來說,wParam參數的高字組和低字組的含義相同。
寬度
雖然視窗捲動列有固定的寬度,Windows使用CreateWindow呼叫中(或者在後面的MoveWindow呼叫中)給定的矩形尺寸來確定捲動列控制項的尺寸。您可以建立細而長的捲動列控制項,也可以建立短而粗的捲動列控制項。
如果您想建立與視窗捲動列尺寸相同的捲動列控制項,那么可以使用GetSystemMetrics取得水平捲動列的高度:
GetSystemMetrics (SM_CYHSCROLL) ;
或者垂直捲動列的寬度:
GetSystemMetrics (SM_CXVSCROLL) ;
根據Windows檔案,捲動列窗樣式識別字SBS_LEFTALIGN、SBS_RIGHTALIGN、SBS_TOP ALIGN和SBS_BOTTOMALIGN給出捲動列的標準尺寸,但是這些樣式只在對話方塊中對捲動列有效。
對視窗捲動列,您可以使用同樣的呼叫來建立捲動列控制項的範圍和位置:
SetScrollRange (hwndScroll, SB_CTL, iMin, iMax, bRedraw) ;
SetScrollPos (hwndScroll, SB_CTL, iPos, bRedraw) ;
SetScrollInfo (hwndScroll, SB_CTL, &si, bRedraw) ;
其區別在於:視窗捲動列將父視窗的代號作為第一個參數,並且以SB_VERT或者SB_HORZ作為第二個參數。
令人吃驚的是,名為COLOR_SCROLLBAR的系統顏色不再用於捲動列。兩端的按鈕和小方塊的顏色由COLOR_BTNFACE、COLOR_BTNHILIGHT、COLOR_BTNSHADOW、COLOR_BTNTEXT (用於小箭頭)、COLOR_DKSHADOW和COLOR_BTNLIGHT決定。兩端按鈕之間區域的顏色由COLOR_BTNFACE和COLOR_BTNHIGHLIGHT決定。
如果您攔截了WM_CTLCOLORSCROLLBAR訊息,那么可以在訊息處理中傳回畫刷以取代該顏色。讓我們來試一下。