在MFC中滑动条(CSliderCtrl)是个常用的控件,用法如下:
1、设置、取得滑动范围:
void SetRange( int nMin, int nMax, BOOL bRedraw = FALSE );
void GetRange( int& nMin, int& nMax ) const;
2、设置、取得按下左右箭头滑动间隔:
int SetLineSize( int nSize );
int GetLineSize( ) const;
3、设置、取得按下PgUp、PgDown时滑动间隔:
int SetPageSize( int nSize );
int GetPageSize( ) const;
4、设置、取得滑块位置:
void SetPos( int nPos );
int GetPos( ) const;
5、设置滑动条刻度的频度:
void SetTicFreq( int nFreq );
6.设置移动滑块时触发的回调事件函数:
选择Slider的“事件”然后选择第一个过程(NM_CUSTOMDRAW)后加入触发的执行代码.
实例:
在对话框中放一个Slider控件,添加相应的Ctrl型变量为m_slider。在对话框初始化函数OnInitDialog()中添加:
BOOL CLlk_wgDlg::OnInitDialog() { CDialog::OnInitDialog(); /* ... ... */ // TODO: Add extra initialization here m_slider.SetRange(1,3000); // 设置滑动范围 (单位:毫秒). m_slider.SetTicFreq(300); // 每10个单位画一刻度. m_slider.SetPos(1000); // 设置默认单消间隔时间为1秒. return TRUE; // return TRUE unless you set the focus to a control }
填充 触发消息: NM_CUSTOMDRAW 对应的响应函数:
void CLlk_wgDlg::OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here UpdateData(true); float show_time; CString pTempInfo; show_time=m_slider.GetPos(); show_time/=1000; pTempInfo.Format((" %5.3f 秒"),show_time); // 浮点数输出5个有效位,其中3个小数位. m_TimerShow.SetWindowText(pTempInfo); pTempInfo.ReleaseBuffer(); UpdateData(false); *pResult = 0; }
其中m_TimerShow为一个静态文本框的控件变量,用来显示滑动条所处的位置。