MFC类库学习——CSliderCtrl的学习
来源:互联网 发布:mac linux双系统 编辑:程序博客网 时间:2024/05/21 08:44
滑动条控制(Slider Control)也叫轨道条控制,其主要是用一个带有轨道和滑标的小窗口以及窗口上的刻度,来让用户选择一个离散数据或一个连续的数值区间。通过鼠标或键盘来进行数据的选择操作,这在WIN98/95中的很多应用程序中都可以看到,如控制面板中的鼠标等,滑动条既可以是水平方式的也可以是垂直方式的。滑动条控制的风格如下:
TBS_HORZ 滑动条是水平方向的
TBS_VERT 滑动条是垂直方向的
TBS_LEFT 滑动条位于窗口左侧
TBS_RIGHT 滑动条位于窗口右侧
TBS_TOP 滑动条位于窗口顶部
TBS_BOTTOM 滑动条位于窗口底部
TBS_BOTH 滑动条位于窗口两侧
TBS_AUTOTICKS滑动条具有刻度,默认
TBS_NOTICKS 滑动条不具有刻度
滑动条的刻度条在每一个数值位置显示一个刻度标记,如果在滑动条上显示某一数值选择区间,则应使用风格TBS_ENABLESELRANGE,此时选择区间两个不再是刻度标记,而是一个小的三角形符号。另外,使用风格TBS_NOTHUMB会使滑标消隐起来。
滑动条控制在MFC类库中被封装为CSliderCtrl控制,其主要操作是设置刻度范围、绘制刻度标记、设置选择范围和当前滑标位置等。当用户进行交互操作时,滑动条控制将向其父窗口发送消息WM_HSCROLL,所以在应用程序中应重载父窗口的OnHScroll()成员函数,以便对消息进行正确处理系统发送的通知代码、滑标位置和指向CSliderCtrl对象的指针等。由于考虑到和水平卷动杆公用同一个成员函数,OnHScroll()函数参数表中的指针变量被定义为CScrollBar*类型,由于实际上消息是由滑动条产生的,所以在程序中必须把这个指针变量强制转换为CSliderCtrl*类型。滑动条和卷动杆的消息代码和含义都非常类似如TB_BOTTOM等,所以这种处理方法比较合理。SetRange()函数用来设置范围,SetPos()函数用来设置当前位置。
当用户拖拽滑块、点击滑块、按↑↓←→键、按PageUp PageDown键、按Home End键时都会触发滚动条消息(此滚动条已经获得焦点)。这些消息的响应一般在父窗口的WM_HSCROLL中处理(讨论水平滚动条)。下来总结下WM_HSCROLL消息的消息响应函数之nSBCode参数的意思。
函数原型:afx_msg void OnHScroll( UINT nSBCode, UINTnPos, CScrollBar*pScrollBar );
nSBCode
Specifies a scroll-bar code that indicates the user’s scrolling request. This parameter can be one of the following:
- SB_LEFT Scroll to far left. // 按Home键时触发
- SB_ENDSCROLL End scroll.//结束对滚动条的控制时触发,比如点击滚动条,当鼠标左键弹起时便叫结束控制
- SB_LINELEFT Scroll left.//按方向键时触发
- SB_LINERIGHT Scroll right.//按方向键时触发
- SB_PAGELEFT Scroll one page left.//按PageUp时或点击滑块左侧空白处触发
- SB_PAGERIGHT Scroll one page right.//按PageDown时或点击滑块右侧空白处触发
- SB_RIGHT Scroll to far right..// 按End键时触发
- SB_THUMBPOSITION Scroll to absolute position. The current position is specified by thenPosparameter.//拖拽滑块并释放时触发,此时nPos有效
- SB_THUMBTRACK Drag scroll box to specified position. The current position is specified by thenPosparameter.//拖拽滑块过程中触发,此时nPos有效
在MFC中有多个slider时OnHScroll函数判断方法
在OnHScroll开始时添加几个CWnd*变量,在和参数中pScrollBar判断就可以了
- void CPlayerDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
- {
- // TODO: Add your message handler code here and/or call default
- CWnd *pSliderPos = this->GetDlgItem(IDC_SLIDER_POS);
- CWnd *pSliderVolume = this->GetDlgItem(IDC_SLIDER_VOLUME);
- if (pScrollBar == pSliderVolume)
- {
- 。。。 。。。
- }
- if (pScrollBar == pSliderPos)
- {
- 。。。 。。。
- }
- CBitmapDialog::OnHScroll(nSBCode, nPos, pScrollBar);
- }
- MFC类库学习——CSliderCtrl的学习
- MFC CSliderctrl类的成员函数
- 学习了下CSliderCtrl的用法
- (转)CSliderCtrl控件学习
- MFC中CSliderCtrl的使用(收集)
- MFC中CSliderCtrl的使用(收集)
- CSliderCtrl类的成员函数
- MFC常用控件CListCtrl 、CSliderCtrl、CToolTipCtrl、CTreeCtrl的自绘
- MFC常用控件CListCtrl 、CSliderCtrl、CToolTipCtrl、CTreeCtrl的自绘
- MFC常用控件CListCtrl、CSliderCtrl、CToolTipCtrl、CTreeCtrl的自绘
- CSliderCtrl的用法
- CSliderCtrl 控件的使用
- CSliderCtrl的使用
- CSliderCtrl的使用
- 学习MFC的方法
- 转的mfc学习
- 转的mfc学习
- 我的MFC学习
- 2013上半年智能电视市场调研报告分析
- OC语法之NSDictionary
- 让对方qq一分钟内over掉
- LINUX进程调度(2)
- LINUX系统调用
- MFC类库学习——CSliderCtrl的学习
- LINUX虚拟文件系统
- UVA 1326 Jurassic Remains
- serialVersionUID
- LINUX内存管理
- LINUX进程管理-1
- 阿录帮帮忙—JSON将Date转String
- 二线视频网站突围战
- java错误:使用了未经检查或不安全的操作