1,将控件slider control拖放到对话框中;
2为slider control添加control型变量m_slider;
3,使用类向导,给对话框类添加“虚函数”,OnInitDialog();
4,在CMyImagge.cpp中,对OnInitDialog()函数进行编写:
// CMyImage 消息处理程序
BOOL CMyImage::OnInitDialog()
{
CDialogEx::OnInitDialog();
CDialogEx::OnInitDialog();
m_slider.SetRange(1,20);//设置滑动范围为1到20
m_slider.SetTicFreq(1);//每1个单位画一刻度
m_slider.SetPos(10);//设置滑块初始位置为10
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
5,使用类向导,给对话框类添加“消息”,WM_HSCROLL消息,在OnHScroll()编写代码;添加一个Edit Control 控件显示滑块具体某个位置的值;或者双击滑动条,即可编辑函数;
6,在CMyImagge.cpp中,对OnHScroll函数进行编写, UpdateData(TRUE); UpdateData(FALSE);两句用于刷新Edit Control的值,让它能随滑块的位置而变化。
void CMyImage::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
UpdateData(TRUE);
// TODO: 在此添加消息处理程序代码和/或调用默认值
CSliderCtrl *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
//m_int 即为当前滑块的值。
m_int=1*pSlidCtrl->GetPos();//取得当前位置值
char str[256] = {0};
itoa(m_int, str, 10); // 将滑动值由int型变为char
GetDlgItem(IDC_EDIT1)->SetWindowText(str);//显示在编辑框
//CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
UpdateData(FALSE);
}
或者为
void CtestDlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
CSliderCtrl *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
//m_int 即为当前滑块的值。
int m_int = 1*pSlidCtrl->GetPos();//取得当前位置值
char str[256] = {0};
itoa(m_int, str, 10);
GetDlgItem(IDC_EDIT1)->SetWindowText(str);//编辑框显示
UpdateData(FALSE);
}
运行,拖动滑块,Edit Control中就能显示具体值。