Slider Control又称为Track Bar,它的外观是一个滑动条(Slider)和可选的记号(Tick mark),当使用鼠标(Mouse)或者方向键(Direction key)移动Slider时,这个控键会发出通知消息告知位置改变。它适合于在一个离散的值或者一些连续的值中进行选择。
MFC将其封装为CSliderCtrl类。
1. 创建一个Slider Contrl后,需要对其进行初始化。这包括:
1) 设置Slider的位置范围
Slider的位置范围是Slider Bar所能表示的连续值的数目。如果希望可以通过Slider Bar在数字1~5间进行选择,那么这个范围就是1~5。另一个技巧是仅让用户在连续的值中选择指定的几个,如数值为1~100,但是仅允许选择0, 20, 40, 60, 80, 100这样几个值,那么这个Slider的范围依然是1~5,而不能是1~100。
设置位置范围是通过SetRange函数完成的。在运行时,还可以通过函数SetRangeMin和SetRangeMax来分别修改最小与最大值。
void SetRangeMin(int nMin, BOOL bRedraw = FALSE)
void SetRangeMax(int nMax, BOOL bRedraw = FALSE)
2) 设置Slider的起始位置
设置起始位置是通过函数void SetPos(int nPos)。
这也可以用于运行时改变Slider的位置。
3) 设置Tick mark
使用SetTic函数可以在指定的位置显示一个Tick mark。更简单的办法是,使用SetTicFreq函数,它可以每隔指定的长度就显示一个Tick mark。这个函数需要TBS_AUTOTICKS属性,在资源编辑器中只要在控件Style属性中的Auto Tickmark栏勾上标记即可。
Tick mark标记是确省的设定,如果不需要,在属性中加上TBS_NOTICKS,同样的,资源编辑器中可以简单的变更。
2. 处理Slider Contrl消息
Slider Contrl通过向父窗口发送WM_HSCROLL消息来通知状态的改变。
使用MFC时,重载了OnHScroll的一个简单的处理过程如下。