1. 程式人生 > >Win32 Slider Control的用法

Win32 Slider Control的用法

暮鼓集    行走集

原作於2008年03月21日

Slider Control又稱為Track Bar,它的外觀是一個滑動條(Slider)和可選的記號(Tick mark),當使用滑鼠(Mouse)或者方向鍵(Direction key)移動Slider時,這個控鍵會發出通知訊息告知位置改變。它適合於在一個離散的值或者一些連續的值中進行選擇。

MFC將其封裝為CSliderCtrl類。

1.建立一個Slider Contrl後,需要對其進行初始化。這包括:

1) 設定Slider的位置範圍

Slider的位置範圍是Slider Bar所能表示的連續值的數目。如果希望可以通過Slider Bar在數字1~5間進行選擇,那麼這個範圍就是1~5。另一個技巧是僅讓使用者在連續的值中選擇指定的幾個,如數值為1~100,但是僅允許選擇0, 20, 40, 60, 80, 100這樣幾個值,那麼這個Slider的範圍依然是1~5,而不能是1~100。

設定位置範圍是通過SetRange函式完成的。在執行時,還可以通過函式SetRangeMin和SetRangeMax來分別修改最小與最大值。

void SetRangeMin(int nMin, BOOL bRedraw = FALSE)

void SetRangeMax(int nMax, BOOL bRedraw = FALSE)

2) 設定Slider的起始位置

設定起始位置是通過函式void SetPos(int nPos)。

這也可以用於執行時改變Slider的位置。

3) 設定Tick mark

使用SetTic函式可以在指定的位置顯示一個Tick mark。更簡單的辦法是,使用SetTicFreq函式,它可以每隔指定的長度就顯示一個Tick mark。這個函式需要TBS_AUTOTICKS屬性,在資源編輯器中只要在控制元件Style屬性中的Auto Tickmark欄勾上標記即可。

Tick mark標記是確省的設定,如果不需要,在屬性中加上TBS_NOTICKS,同樣的,資源編輯器中可以簡單的變更。

2.處理Slider Contrl訊息

Slider Contrl通過向父視窗傳送WM_HSCROLL訊息來通知狀態的改變。

使用MFC時,過載了OnHScroll的一個簡單的處理過程如下。

switch( nSBCode )
{
case TB_BOTTOM: // VK_END
 break;
 
case TB_ENDTRACK: // WM_KEYUP
 break;
 
case TB_LINEDOWN: // VK_RIGHT or VK_DOWN
 break;
 
case TB_LINEUP: // VK_LEFT or VK_UP
 break;
 
case TB_PAGEDOWN: // VK_NEXT
 break;
 
case TB_PAGEUP: // VK_PRIOR
 break;
 
case TB_THUMBPOSITION: // WM_LBUTTONUP
 break;
 
case TB_THUMBTRACK: // Slider movement
 break;
 
case TB_TOP: //VK_HOME
 break;
}

3.取得Slider Control的狀態

通常我們不需要對Slider Control的訊息做處理,而只關心它的狀態表示的數值。這可以使用

int GetPos()來取得。