新建MFC工程TestSlider
在窗口中加入三个Slider Control控件,三个Static Text控件。将静态文本控件Caption属性设置为0/100,实现滑动滑杆,静态文本能够实时显示滑杆数值

对于垂直滑杆,只需要将Orientation属性设置为Vertical

Slider控件本身并没有响应滑动的消息函数,因此对于水平Slider控件,可以通过滑杆所在窗体的OnHScroll()响应。在窗体的属性,消息,中找到WM_HSCROLL,点击添加OnHScroll添加消息处理函数

系统会自动做以下三步:
在CTestSliderDlg类中声明OnHScroll函数
实现OnHScroll函数
void CTestSliderDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
添加消息映射
我们需要修改OnHScroll函数,实现静态文本控件实时显示滑杆数值
void CTestSliderDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CString sliderPos;
//当有多个水平滑杆,通过与pScrollBar比较,来判断是哪一个水平滑杆被滑动
if (pScrollBar == GetDlgItem(IDC_SLIDER1))
{
sliderPos.Format(L"%d/100",((CSliderCtrl*)GetDlgItem(IDC_SLIDER1))->GetPos());
GetDlgItem(IDC_STATIC1)->SetWindowText(sliderPos);
}
if (pScrollBar == GetDlgItem(IDC_SLIDER3))
{
sliderPos.Format(L"%d/100",((CSliderCtrl*)GetDlgItem(IDC_SLIDER3))->GetPos());
GetDlgItem(IDC_STATIC3)->SetWindowText(sliderPos);
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
同样对于垂直Slider控件,可以通过滑杆所在窗体的OnVScroll()响应。在窗体的属性,消息,中找到WM_VSCROLL,点击添加OnVScroll添加消息处理函数

void CTestSliderDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CString sliderPos;
if (pScrollBar == GetDlgItem(IDC_SLIDER2))
{
sliderPos.Format(L"%d/100",100 - ((CSliderCtrl*)GetDlgItem(IDC_SLIDER2))->GetPos());
GetDlgItem(IDC_STATIC2)->SetWindowText(sliderPos);
}
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}
在BOOL CTestSliderDlg::OnInitDialog()函数中对于三个滑杆设置滑动范围
// TODO: 在此添加额外的初始化代码
((CSliderCtrl*)GetDlgItem(IDC_SLIDER1))->SetRange(0,100);
((CSliderCtrl*)GetDlgItem(IDC_SLIDER2))->SetRange(0,100);
((CSliderCtrl*)GetDlgItem(IDC_SLIDER3))->SetRange(0,100);
效果:
