原文:http://blog.csdn.net/myyzqt/article/details/7396399
Slider用法:
1、设置、取得滑动范围:
2、设置、取得按下键盘上左右箭头滑动间隔:
3、设置、取得按下键盘上PgUp、PgDown时滑动间隔:
void SetPos( int nPos );
5、设置滑动条刻度的频度:
6、用函数SetTic来在指定位置设置刻度.Windows自动显示的刻度是均匀的,利用该函数可以人为设置不均匀的刻度
BOOL SetTic( int nTic );
7、用函数ClearTics来清除所有的刻度
void ClearTics( BOOL bRedraw = FALSE );
在对话框中放一个Slider控件,为其关联相应的Ctrl型变量为m_slider。vc 2008中关联方法为:在控件上右击,add variable。在vc6.0中,右击class wizard中添加。在基于dialog的mfc程序中,该控件的初始化即设置范围等放在OnInitDialog()中,若是文档视图的mfc应用程序(视图基类为CFormView),则该控件的初始化放在C****View的OnInitialUpdate函数中
该控件的消息:
NM_CUSTOMDRAW,是子控件通知其父控件它已经完成重画功能,对Slider来说也就是我们每次鼠标按住滑块移动一下就能使滑块向拥有该滑块的Slider产生一个NM_CUSTOMDRAW消息,以便用户实时获得移动滑块时的是实时值。
NM_RELEASEDCAPTURE,是子控件被鼠标按住拖动到适当位置以后鼠标释放时子控件向父控件产发送的消息,对于Slider来说就是每次滑块被鼠标拖曳完鼠标释放的时候滑块给Slider发送的消息。
还有一个消息就是NM_OUTOFMEMORY,是当没有足够内存来相应子控件时向父控件发送的消息。
而在vc2008中又添加了两个消息NM_THEMECHANGED和TRBN_THUMBPOSCHANGING
Slider控件本身并没有响应滑动的消息函数,但可以通过主窗体的OnHScroll()响应。在类向导中为对话框添加WM_HSCROLL消息,在响应函数中添加:
//m_int 即为当前滑块的值。
Scroll bar用法:
滚动条通常用于浏览显示内容、确定位置,也可以作为数据输入的工具。通过编程控制,可以为不具备滚动能力的控件提供滚动功能。在实际应用中,滚动条也常用作数量、速度的指示器,如在一些多媒体中用来控制音量、画面的滚动速度等。
滚动条分为水平滚动条(HScrollBar)和垂直滚动条(VScrollBar)两种,分别用工具箱中的 和
工具绘制。在滚动条的两端各有一个带箭头的按钮,中间有一个滑块。当滚动条位于最左端或顶端时,表示其值最小,反之为最大。除了方向之外,水平滚动条和垂直滚动条的动作是相同的。
1.滚动条的常用属性
滚动条除支持Enabled、Height、Left、Caption、Top、Visible、Width等标准属性外,还有几个表示滚动条取值的常用属性,见表4-6-1。
表4-6-1滚动条的常用属性
属性 | 说明 |
Max | 该属性用于设置滚动条所表示的最大值,为滑动块在右(或下)端时的值。默认值为32767,其取值范围为-32767~32767。 |
Min | 该属性用于设置滚动条所表示的最小值,为滑动块在左(或上)端时的值。默认值为0,其取值范围为-32767~32767。 |
Value | 该属性返回或设置滑动块当前位置的值,如果用户拖动滑动块,Value属性值随之改变,它的取值始终介于Max和Min属性值之间(包括这两个值)。若在程序中对该属性赋值,则会根据数值移动滚动块的位置。注意不能把Value属性的值设在Min和Max范围之外。 |
LargeChange | 该属性用于设定当用鼠标单击滑动块和箭头之间的区域(不包括滑动块)时,Value属性值的增量或减量,该属性的默认值为1,取值范围为1~32767。 |
SmallChange | 该属性用于设定当用户单击滚动箭头时,Value属性值的变化量,该属性的默认值为1,取值范围为1~32767。 |
2.滚动条的常用事件
滚动条能响应的事件主要有以下几种,其中最常用的是Change和Scroll事件。
Change Scroll KeyDown KeyUp KeyPass LostFocus GetFocus
⑴ Change事件
当单击滚动箭头、单击滚动条区域或拖动滑动块结束时将触发Change事件。
⑵ Scroll事件
当在滚动条内拖动滑动块时触发该事件。
在程序运行中,每当滚动条的Value属性发生变化时,就发生Change事件。而每当用户用鼠标单击滚动箭头、单击滑动块与箭头之间的区域或沿着滚动条拖拉滑动块的动作结束时,滚动条的Value属性就发生变化。
尽管拖动滑动块会引起Value属性的变化,从而触发Change事件,但在滚动条内拖动滑动块时,并不发生Change事件,此时将触发Scroll(滚动)事件。
在实际编程中,常用Scroll事件来跟踪滚动条在拖动时数值的变化。由于在单击滚动条或滚动箭头时,将产生Change事件,因此常利用Change事件来获得滚动条变化后的最终值。