
在 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 ); 实例: 在对话框中放一个 Slider 控件,添加相应的 Ctrl 型数组为 m_slider。在对话框初始化函数OnInitDialog()中添加: BOOL CDlgSetup::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_slider.SetRang(0,100);//设置滑动范围 m_slider.SetTicFreq(10);//每 10 个单位画一刻度 return TRUE; // return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE }Slider 控件本身并没有响应滑动的消息函数,但可以借助主窗体的 OnHScroll()响应。

在类向导中为对话框添加 WM_HSCROLL 消息,在响应函数中添加: void CDlgSetup::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: Add your message handler code here and/or call default CSliderCtrl *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1); m_int=pSlidCtrlHue->GetPos();//取得当前位置值CDialog::OnHScroll(nSBCode, nPos, pScrollBar); } ///////////////////////////////////////////////////////////////////// VC++中 slider 控件的使用 MFC 界面制作 2009-07-28 20:51:08 阅读 212 评论 0 字号:大中小 滑动控件是 Windows 中最常见的控件之一。

一般而言它是由一个滑动条,一个滑块和可选的刻度组成,用户可以借助移动滑块在相应的控件中显示对应的值。通常,在滑动控件附近一定有标签控件或编辑框控件,用于显示相应的值。滑动控件在应用程序中用途级为广泛,如在桌面的属性中就可以看见。为此slider控件滑动slider控件滑动,让我们一起来看一下它的实现方式。 (1)在 VC++ 6.0 中新建一个对话框文档的项目。 (2)打开资源管理器,在对话框中放置一个 EDIT 控件,然后在它里面放上一个 Slider控件。基本的框架已经完成了。 (3)对 Slider 控件右击,选择“建立类向导”,对今天的 Slider 控件定义一个变量m_Slider,类型为 CSliderCtrl。 (4)在对话框初始化的代码 BOOL CMy601Dlg::OnInitDialog(),后添加相应的属性。以下是常见的属性修改变量: * GetRange,SetRange 函数用于查询和修改滑动条的取值范围,默认为 0~100。函数定义方式如下: void GetRange(int &nMin,int &nMax) const; void SetRange(int nMin,int nMax,BOOL bRedrGETaw=FALSE); * GetPos,SetPos 函数 用于查询和修改滑动条的当前值。

函数定义形式如下: int GetPos() const; int SetPos(int nPos); * GetLineSize,SetLineSize 函数 用于查询和修改在按一下右或左箭头时滑块的移动量,默认为 1 个单位。函数定义方式如下: int GetLineSize() const; int SetLineSize(int nSize); * GetPageSize,SetPageSize 函数 用于查询和修改函滑块和块移动量,块移动量是指当按下 PgUp 或 PgDown 时滑块的移动量。函数定 义形式如下: int GetPageSize() const; int SetPageSize(int nSize); * SetTicFreq 函数 用于设定滑动条刻度的频率。默认为一个单位一个函数。函数定义方式如下: void SetTicFreq(int nFreq); * SetTic 函数 用于在选定的位置设定刻度。Windows 默认的刻度是均匀的。函数定义方式如下: BOOL SetTic(int nTic); * ClearTics 函数 用于消除所有的刻度。

函数定义方式如下: void ClearTics(BOOL bRedraw=FALSE); 我们在初始化时读取以下段落: m_Slider.SetRange(-100,100); m_Slider.SetTicFreq(10); 即:设置范围为-100 到 100,刻度为每 10 个单位一个。 (5)现在我们加入事件过程代码。 选择 Slider 的“事件”然后选择第一个过程(NM_CUSTOMDRAW)随后加入下面代码: void CMy601Dlg::OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult) { UpdateData(TRUE); m_Int=m_Slider.GetPos(); UpdateData(FALSE); *pResult = 0; } 其中 m_Int 是定义的 EDIT 控件的类别为 INT 的变量。至此我们的编辑工作结束了。 (6)编译运行程序试试吧,很方便就使用了 Slider 控件。 ////////////////////////////////////////////////////////////////// VC 通用控件编程之 CSlider 控件 2003-06-27 17:07 作者:出处:programunion 责任编辑:方舟 滑动条控制(Slider Control)也叫轨道条控制,其主要是用一个带有轨道和滑标的小窗口或者窗口上的刻度,来让客户选取一个离散数据或一个连续的数值区间。
通过鼠标或屏幕来进行数据的选取操作,这在 WIN98/95 中的好多应用程序中都可以看见,如控制面板中的鼠标等,滑动条既可以是水平模式的也可以是平行模式的。滑动条控制的风格如下:TBS_HORZ 滑动条是水平方向的 TBS_VERT 滑动条是平行方向的 TBS_LEFT 滑动条位于窗口右侧 TBS_RIGHT 滑动条位于窗口左侧 TBS_TOP 滑动条位于窗口上方TBS_BOTTOM 滑动条位于窗口上方 TBS_BOTH 滑动条位于窗口左侧 TBS_AUTOTICKS 滑动条带有刻度,默认 TBS_NOTICKS 滑动条不带有刻度 滑动条的刻度条在每一个数值位置显示一个刻度标记,如果在滑动条上显示某一数值选取区间,则应使用风格 TBS_ENABLESELRANGE,此时选择区间两个不再是刻度标记,而是一个小的三角形符号。另、绘制刻度标记、设置选用范围和当前滑标位置等。当客户进行交互操作时,滑动条控制将向其父窗口发送消息 WM_HSCROLL,所以在应用程序中应重载父窗口的 OnHScroll()成员函数,以便对消息进行恰当处理系统发送的通知代码、滑标位置和指向 CSliderCtrl 对象的指针等。
由于考虑到和水平卷动杆公用同一个成员函数,OnHScroll()函数参数表中的指针变量被定义为 CScrollBar*类型,由于实际上消息是由滑动条造成的,所以在程序中需要把这个指针变量强制转化为 CSliderCtrl*类型。滑动条和卷动杆的消息代码和意义都比较类似如TB_BOTTOM 等,所以这些处理方式非常合理。SetRange()函数用来修改范围,SetPos()函数用来设定当前位置。 (二)滑动条控制的对象结构 滑动条控制的构建方式CsliderCtrl &SliderCtrl 建立滑动条控制对象结构Create 建立滑动条控制对象并绑定对象滑动条控制类 CSliderCtrl::Create 的调用格式如下: BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 其中参数 dwStyle 用来确认滑动条控制样式;参数 rect 用来确认滑动条控制的大小和位置;参数 pParentWnd 用来确认滑动条控制的父窗口指针;参数 nID 用来确认滑动条控制的控制符 ID 值。
2、滑动条控制的类属性 滑动条控制对象的类属性包含取得滑动条大小 GetLineSize、设置滑动条大小SetLineSize、取得滑动条页大小 GetPageSize、设置滑动条页大小 SetPageSize、取得滑动条最大位置 GetRangeMax、取得滑动条最小位置 GetRangeMin、取得滑动条范围 GetRange、设置滑块最小位置SetRangeMin、设置滑块最大位置SetRangeMax、设置滑动条范围SetRange、取得滑块当前位置 GetSelection、设置滑块当前位置 SetSelection、取得滑动条当前位置GetPos 和修改滑动条当前位置 SetPos 等。 3、滑动条控制的操作方法 滑动条控制的操作方法包括清理滑动条当前选取 ClearSel、验证滑动条当前位置能否在最大最小位置之间 VerifyPos 和消除当前刻度标识 ClearTics。 滑动条控制的应用方法实例 1、利用应用程序向导 AppWizard 生成基于对象框的应用程序 CSlidDlg; 2、在对话框中修改滑动条控制,其 ID 为 IDC_SLIDER; 3、在对话框初始代码中提高控制的范围和位置: (1)在 SlidDlg.h 中修改数据成员,用来表示滑动条的当前值: //SlidDlg.h class CSlidDlg:public Cdialog { ......//其它代码 public: int m_nCur; ......//其它代码 }(2)在 SlidDlg.cpp 中修改初始状态 BOOL CSlidDlg::OnInitDialog() { Cdialog::OnInitDialog(); ......//其它代码 //TODO:Add extra initialization here CSliderCtrl *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLLIDER); pSlidCtrl->SetRange(1,5,TRUE);//设置滑动条范围 pSlidCtrl->SetPos(2);//设置滑动条位置 ......//其它代码 return TRUE; }(3)完善滑动条的消息处理,利用类向导 ClassWizard 增加对话框窗口的 WM_HSCROLL消息处理函数,并获得滑标所指位置值: void CSlidDlg::OnHScroll(UINT nSBCode,UINT nPos,CScrollBar *pScrollBar) { //TODO:Add your message handler? Cdialog::OnHScroll(nSBCode,nPos,pScrollBar); CSliderCtrl *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLLIDER); m_nCur=pSlidCtrl->GetPos();//取得当前位置值 } /////////////////////////////////////////////////////////////////// void CMainForm::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 在此添加消息处理程序代码和/或读取默认值 CWnd *pSlider1, *pSlider2; pSlider1 = GetDlgItem(IDC_SLIDER_AUDIO); pSlider2 = GetDlgItem(IDC_SLIDER_MIC); int pos; if(pScrollBar == pSlider1) { m_mixer.SetVolume(CMixer::SPEAKERS, nPos); } else if(pScrollBar == pSlider2) { m_mixer.SetVolume(CMixer::MICROPHONE, nPos); } CDialog::OnHScroll(nSBCode, nPos, pScrollBar); } ?
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-128619-1.html
今天用了十几个小时就没电了