slider Win32

 

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的一个简单的处理过程如下。        

switch( nSBCode )
{
case TB_BOTTOM: // VK_END  
 break;
 
case TB_ENDTRACK: // WM_KEYUP
 break;
 
case TB_LINEDOWN: // VK_RIGHT or VK_DOWN  
 break;
 
case TB_LINEUP: // VK_LEFT or VK_UP  
 break;
 
case TB_PAGEDOWN: // VK_NEXT
 break;
 
case TB_PAGEUP: // VK_PRIOR
 break;
 
case TB_THUMBPOSITION: // WM_LBUTTONUP
 break;
 
case TB_THUMBTRACK: // Slider movement
 break;
 
case TB_TOP: //VK_HOME  
 break;
}

你可能感兴趣的:(课后习题)