MFC控件之滑动条slider的简单使用

it2024-07-14  40

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中就能显示具体值。

最新回复(0)