複製鏈接
請複製以下鏈接發送給好友

CSliderCtrl

鎖定
CSliderCtrl表示滑塊控件也稱為跟蹤條。
中文名
類表示滑塊控件
外文名
CSliderCtrl
別    名
跟蹤條
控制方法
鼠標或者箭頭鍵移動滑塊

CSliderCtrl基本介紹

CSliderCtrl 類表示滑塊控件 (Slider Control),也稱為跟蹤條。滑塊控件 (Slider Control) 是一個包含一個滑塊和可選刻度線的窗口。當用户使用鼠標或者箭頭鍵移動滑塊時,滑塊控件 (Slider Control) 發送通知消息以指示此更改。
當希望用户選擇一個不連續的值或者某個範圍中一組連續值時,滑塊控件 (Slider Control) 很有用。例如,通過將滑塊移動到給定刻度線,可以使用滑塊控件 (Slider Control) 使用户得以設置鍵盤的重複速度。
滑塊控件 (Slider Control) 中的滑塊以您在創建它時所指定的增量移動。例如,如果您指定滑塊控件 (Slider Control) 的範圍為 5,則滑塊只能佔有 6 個位置:一個位置在滑塊控件 (Slider Control) 的左邊,而此範圍中的每個增量各有一個位置。通常,這些位置的每一個都用一個刻度線標識。
滑動條控制主要是用一個帶有軌道和滑標的小窗口以及窗口上的刻度,來讓用户選擇一個離散數據或一個連續的數值區間。通過鼠標或鍵盤來進行數據的選擇操作,這在WIN98/95中的很多應用程序中都可以看到,如控制面板中的鼠標等,滑動條既可以是水平方式的也可以是垂直方式的。滑動條控制的風格如下:
TBS_HORZ 滑動條是水平方向的
TBS_VERT 滑動條是垂直方向的
TBS_LEFT 滑動條位於窗口左側
TBS_RIGHT 滑動條位於窗口右側
TBS_TOP 滑動條位於窗口頂部
TBS_BOTTOM 滑動條位於窗口底部
TBS_BOTH 滑動條位於窗口兩側
TBS_AUTOTICKS滑動條具有刻度,默認
TBS_NOTICKS 滑動條不具有刻度
滑動條的刻度條在每一個數值位置顯示一個刻度標記,如果在滑動條上顯示某一數值選擇區間,則應使用風格TBS_ENABLESELRANGE,此時選擇區間兩個不再是刻度標記,而是一個小的三角形符號。另外,使用風格TBS_NOTHUMB會使滑標消隱起來。
滑動條控制在MFC類庫中被封裝為CSliderCtrl控制,其主要操作是設置刻度範圍、繪製刻度標記、設置選擇範圍和當前滑標位置等。當用户進行交互操作時,滑動條控制將向其父窗口發送消息WM_HSCROLL,所以在應用程序中應重載父窗口的OnHScroll()成員函數,以便對消息進行正確處理系統發送的通知代碼、滑標位置和指向CSliderCtrl對象的指針等。由於考慮到和水平捲動杆公用同一個成員函數,OnHScroll()函數參數表中的指針變量被定義為CScrollBar*類型,由於實際上消息是由滑動條產生的,所以在程序中必須把這個指針變量強制轉換為CSliderCtrl*類型。滑動條和捲動杆的消息代碼和含義都非常類似如TB_BOTTOM等,所以這種處理方法比較合理。SetRange()函數用來設置範圍,SetPos()函數用來設置當前位置。

CSliderCtrl滑塊控件類函數簡介

CSliderCtrl::CSliderCtrl 構造函數
CSliderCtrl::Create  創建軌道條。
CSliderCtrl::GetLineSize 取得一行的大小,對應鍵盤的方向鍵。
CSliderCtrl::SetLineSize 設置一行的大小。
CSliderCtrl::GetPageSize 取得一頁的大小,對應PageUp、PageDown鍵。
CSliderCtrl::SetPageSize 設置一頁的大小。
CSliderCtrl::GetRangeMax 取得上限,就是最大值。
CSliderCtrl::GetRangeMin 取得下限,就是最小值。
CSliderCtrl::GetRange 取得上下限。
CSliderCtrl::SetRangeMin 設置最小值,bRedraw表示是否重繪。
CSliderCtrl::SetRangeMax 設置最大值,bRedraw表示是否重繪。
CSliderCtrl::SetRange 設置上下限,bRedraw表示是否重繪。
CSliderCtrl::GetSelection 取得軌道條的選擇範圍,nMin存放起始位置,nMax存放結束位置。
CSliderCtrl::SetSelection 設置軌道條的選擇範圍,此範圍會高亮顯示。
CSliderCtrl::GetChannelRect 取得Channel的範圍,Channel是溝、水道的意思。它在刻度之上,供Thumb移動的區域。
CSliderCtrl::GetThumbRect 取得“拇指”的範圍,“拇指”就是我們可以通過鼠標拖動的那個小方塊。
CSliderCtrl::GetPos 取得軌道條的當前位置。
CSliderCtrl::SetPos 設置軌道條的當前位置。
CSliderCtrl::GetNumTics 取得刻度的數量。
CSliderCtrl::GetTicArray  取得所有刻度的位置。
CSliderCtrl::GetTic 取得第 nTic 個刻度的位置,無論此刻度是否顯示。首刻度和尾刻度由系統處理,不在此列。假定範圍是10到100,那麼GetTic(0)的值是11,GetTic(1)值是12。
CSliderCtrl::GetTicPos 取得第 nTic 個刻度的物理位置,客户區座標。
CSliderCtrl::SetTic 在某個刻度的位置的顯示一個刻度。
CSliderCtrl::SetTicFreq 設置顯示刻度的間隔,假定範圍是0到100,SetTicFreq(20)後,會在20、40、60、80顯示刻度,加上系統的兩個刻度0、100,總共6個。
CSliderCtrl::GetBuddy 取得關聯窗口。
CSliderCtrl::SetBuddy 設置關聯窗口。
CSliderCtrl::GetToolTips 取得提示條。
CSliderCtrl::SetToolTips 設置提示條。
CSliderCtrl::SetTipSide 設置提示條的位置。
CSliderCtrl::ClearSel 清空當前選擇。
CSliderCtrl::VerifyPos 確認當前位置是否合法。
CSliderCtrl::ClearTics 清除當前刻度。

CSliderCtrl操作實例

一,新建一個基於對話框的工程SliderCtrl。
二,在主對話框上增加一個軌道條控件,把它弄大些,選中“Tick marks”、“Enable selection”、“Auto ticks”屬性。
三,為其關聯一個CSliderCtrl類型的變量m_slider。
四,在主對話框的初化函數中加如下代碼:
BOOLCSliderCtrlDlg::OnInitDialog()
{
//...
m_slider.SetRange(0,100);
m_slider.SetPageSize(10);
m_slider.SetLineSize(1);
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
五,增加兩個按鈕,響應函數如下:
voidCSliderCtrlDlg::OnButton1()
{
intiPos=m_slider.GetPos();
CStringstrMess;
strMess.Format("你輸入的分數是%d\n",iPos);
AfxMessageBox(strMess);
}
voidCSliderCtrlDlg::OnButton2()
{
//設置每10個刻度顯示一個間隔
m_slider.SetTicFreq(10);
//在75處增加一個刻度線
m_slider.SetTic(75);
//高亮顯示60-79
m_slider.SetSelection(60,79);
m_slider.Invalidate();
m_slider.UpdateWindow();
}
[1] 
(二)滑動條控制的對象結構
滑動條控制的建立方法
CsliderCtrl &SliderCtrl 建立滑動條控制對象結構
Create 建立滑動條控制對象並綁定對象
滑動條控制類CSliderCtrl::Create的調用格式如下:
BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
其中參數dwStyle用來確定滑動條控制風格;參數rect用來確定滑動條控制的大小和位置;參數pParentWnd用來確定滑動條控制的父窗口指針;參數nID用來確定滑動條控制的控制符ID值。
2、滑動條控制的類屬性
滑動條控制對象的類屬性包括
取得滑動條大小GetLineSize
設置滑動條大小SetLineSize
取得滑動條頁大小GetPageSize
設置滑動條頁大小SetPageSize
取得滑動條最大位置GetRangeMax
取得滑動條最小位置GetRangeMin
取得滑動條範圍GetRange
設置滑塊最小位置SetRangeMin
設置滑塊最大位置SetRangeMax
設置滑動條範圍SetRange
取得滑塊當前位置GetSelection
設置滑塊當前位置SetSelection
取得滑動條當前位置GetPos
設置滑動條當前位置SetPos
3、滑動條控制的操作方法
滑動條控制的操作方法包括清除滑動條當前選擇ClearSel、驗證滑動條當前位置是否在最大最小位置之間VerifyPos和清除當前刻度標誌ClearTics。
滑動條控制的應用技巧示例
1、利用應用程序嚮導AppWizard生成基於對象框的應用程序CSlidDlg;
2、在對話框中設置滑動條控制,其ID為IDC_SLIDER;
3、在對話框初始代碼中增加控制的範圍和位置:
(1)在SlidDlg.h中設置數據成員,用來表示滑動條的當前值:
//SlidDlg.h
classCSlidDlg:publicCdialog
{
//其它代碼
public:
intm_nCur;
//其它代碼
}
(2)在SlidDlg.cpp中設置初始狀態
BOOLCSlidDlg::OnInitDialog()
{
Cdialog::OnInitDialog();
//其它代碼
CSliderCtrl*pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLLIDER);
pSlidCtrl->SetRange(1,5,TRUE);//設置滑動條範圍
pSlidCtrl->SetPos(2);//設置滑動條位置
//其它代碼
returnTRUE;
}
(3)完善滑動條的消息處理,利用類嚮導ClassWizard增加對話框窗口的WM_HSCROLL消息處理函數,並取得滑標所指位置值:
voidCSlidDlg::OnHScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar)
{
Cdialog::OnHScroll(nSBCode,nPos,pScrollBar);
CSliderCtrl*pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLLIDER);
m_nCur=pSlidCtrl->GetPos();//取得當前位置值
}
參考資料