旋轉按鈕(微調按鈕) : 對應的控件類是CSpinButtonCtrl
進度條:對應的控件類是CProgressCtrl
滑塊:對應的控件類是CSliderCtrl
對這三個控件的操作都是同過與之相關聯的控件類完成的,並且這三個控件有極大的相似性,故這裏放到一起
先認識下:
Spin: Progress: Slider:
常用函數:
SetRange()/GetRange(); // 設置、獲取控件表示的範圍
/* 設置控件的增量(步長) */
CSpinButtonCtrl::SetAccel
CProgressCtrl::SetStep
CSlierCtrl::SetPageSize
CSliderCtrl::SetLineSize
SetPos()/GetPos(); // 設置、獲取當前數值
另外:旋轉按鈕通常和編輯框一起使用,所以使用前需要設置兩者的夥伴關係。
使用案列程序:
Spin控件和編輯框控件的關聯設置如下: 勾選:Auto buddy 和 Set buddy interger
程序界面設置如下:
爲了方便操作控件:分別爲Progress、Slider、Spin控件關聯三個控件類型的變量:m_wndProgress、m_wndSlider、m_wndSpin
具體功能函數顯示如下:
/*************************************
初始化控件函數
**************************************/
void CCtrl4Dlg::InitCtrl()
{
// 設置控件的數值範圍
m_wndSpin.SetRange (0, 100);
m_wndProgress.SetRange (0, 100);
m_wndSlider.SetRange (0, 100);
// 設置控件的步長
UDACCEL accel = {0};
accel.nSec = 1;// 設置按住幾秒時間開始快輸增長
accel.nInc = 1;// 增長率
m_wndSpin.SetAccel (1, &accel);
m_wndProgress.SetStep (10);
m_wndSlider.SetLineSize (5); // 設置鼠標點擊和光標按鍵的增量
m_wndSlider.SetPageSize (20);// 設置鍵盤翻頁按鍵的增量
// 設置每個刻度的值,需要Slider控件勾選"Tic marks" 和 "Auto tics"樣式
m_wndSlider.SetTicFreq (20);
}
/***********************************************************
"增長"按鈕消息響應函數
************************************************************/
void CCtrl4Dlg::OnBtnAdd()
{
// TODO: Add your control notification handler code here
// 進度條前進一個步長
m_wndProgress.StepIt ();
// 獲取進度條的當前位置
int nPos = m_wndProgress.GetPos ();
// 把獲取到的爲之設置給Slider和Spin
m_wndSlider.SetPos (nPos);
m_wndSpin.SetPos (nPos);
}
/********************************************************************************
Slider的NM_CUSTOMDRAW消息響應函數,當用戶拖動Slider時設置Progress和Spin的位置
*********************************************************************************/
void CCtrl4Dlg::OnCustomdrawSlider(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
// 獲取Slider的當前位置
int nPos = m_wndSlider.GetPos ();
// 把獲取到的爲之設置給Progress和Spin
m_wndProgress.SetPos (nPos);
m_wndSpin.SetPos (nPos);
*pResult = 0;
}