MFC实战演练----滑动条(CSliderCtrl) + 文本框(EditCtrl)
目的:滑动 CSliderCtrl 降幅度显示到 EditCtrl 上。
步骤:
1>在页面上分别创建一个控件,CSliderCtrl的ID为:IDC_SLIDER_INPUT;EditCtrl的ID为:IDC_EDIT_OUTPUT。
2>分别给这两个控件添加变量,CSliderCtrl为:CSliderCtrl m_Input; EditCtrl为:int m_Output。
3>添加以下代码:
3.1>在.h文件中,添加到 protected 下面:
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
3.2>在.cpp文件中,添加到函数队列下面:
ON_WM_HSCROLL()
3.3>在初始化函数 OnInitDialog() 下面添加如下代码赋初始值:
1 m_Input.SetRange(0, 200, TRUE); //设置滑动范围 2 m_Input.SetPos(100); //设置初始位置 3 m_Output = m_Input.GetPos(); //显示初始数值
3.4>在.cpp文件中,添加如下函数:
1 //CMfcStudyDlgDlg为窗口类名 2 void CMfcStudyDlgDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 3 { 4 // TODO: Add your message handler code here and/or call default 5 if(pScrollBar != NULL ) 6 { 7 // 强制转换成CSliderCtrl 8 CSliderCtrl* pSlider = (CSliderCtrl*)pScrollBar; 9 // 根据CSliderCtrl ID 来判断是哪一个CSliderCtrl 10 if(pSlider->GetDlgCtrlID() == IDC_SLIDER_INPUT) 11 { 12 //方法一: 13 long v = pSlider->GetPos(); 14 m_Output = v; 15 16 //方法二: 17 // nPos就是此时滑杆的位置,显示到 CEdit 就可以了 18 char temp[30]; 19 sprintf_s(temp, 30, "%d", nPos); 20 GetDlgItem(IDC_EDIT_OUTPUT)->SetWindowText(temp); 21 22 //刷新页面数据 23 UpdateData(FALSE); 24 } 25 } 26 }
-------------------------------------------------------------------------------------------------------------------
【附】:在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 );
更多理论:
http://www.cnblogs.com/szflyming/articles/246010.html
posted on 2012-09-29 15:46 xuejianhui 阅读(601) 评论(0) 编辑 收藏 举报