旋转按钮(微调按钮) : 对应的控件类是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;
}