旋转按钮(微调按钮) : 对应的控件类是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; }
Demo下载地址:点击打开链接
MFC控件编程:旋转按钮、进度条和滑块控件,布布扣,bubuko.com
时间: 2024-09-28 22:18:49