Slider工具条应用总结

来源:互联网 发布:java中有哪些集合 编辑:程序博客网 时间:2024/06/07 15:04


1.如何控制slider:

应用程序可以调用滑块控件 (Slider Control) 的成员函数来检索有关滑块控件 (Slider Control) (CSliderCtrl) 的信息并更改它的特征。

若要检索滑块的位置(即,用户已选择的值),请使用(GetPos 成员函数。若要设置滑块的位置,请使用SetPos 成员函数。在任何时候都可以用 VerifyPos 成员函数来确保滑块位于最小值和最大值之间。

滑块控件 (Slider Control) 的范围为滑块控件 (Slider Control) 能够表示的连续数值集。第一次创建滑块控件 (Slider Control) 后,大多数应用程序用SetRange 成员函数设置滑块控件 (Slider Control) 的范围。在用 SetRangeMaxSetRangeMin 成员函数创建滑块控件 (Slider Control) 后,应用程序可以动态改变滑块控件 (Slider Control) 的范围。允许动态更改范围的应用程序一般在用户处理完滑块控件 (Slider Control) 后检索最后的范围设置。若要检索这些设置,请使用GetRangeGetRangeMaxGetRangeMin 成员函数。

 

 

         m_SliderA.SetRange(0, 255);m_SliderB.SetRange(0,255);m_nPosA = 120;m_nPosB=255;UpdateData(FALSE);

 

2 如何用响应slider的改变:

滑块控件 (Slider Control) 通过向父窗口发送 WM_HSCROLLWM_VSCROLL 消息(取决于滑块控件 (Slider Control) 的方向),将用户操作通知其父窗口。若要处理这些消息,请将WM_HSCROLLWM_VSCROLL 消息的处理程序添加到父窗口。将向 OnHScrollOnVScroll 成员函数传递通知代码、滑块的位置和指向CSliderCtrl 对象的指针。注意指针的类型为 CScrollBar *,即使它指向CSliderCtrl 对象。若要操作滑块控件 (Slider Control),可能需要转换该指针的类型。

滑块控件 (Slider Control) 不是使用滚动条通知代码,而是发送不同的通知代码集。只有当用户使用键盘与滑块控件 (Slider Control) 交互时,滑块控件 (Slider Control) 才发送TB_BOTTOMTB_LINEDOWNTB_LINEUPTB_TOP 通知代码。只有当用户使用鼠标时才发送 TB_THUMBPOSITIONTB_THUMBTRACK 通知消息。在两种情况下都发送 TB_ENDTRACKTB_PAGEDOWNTB_PAGEUP 通知代码。

下表列出了滑块控件 (Slider Control) 通知消息和导致发送通知的事件(虚键控代码和鼠标事件)。(有关标准虚键控代码的列表,请参见 Winuser.h。)

通知消息导致发送通知的事件TB_BOTTOMVK_ENDTB_ENDTRACKWM_KEYUP(用户释放了发送相关虚键控代码的键)TB_LINEDOWNVK_RIGHTVK_DOWNTB_LINEUPVK_LEFTVK_UPTB_PAGEDOWNVK_NEXT(用户单击了滑块下面或右边的通道)TB_PAGEUPVK_PRIOR(用户单击了滑块上面或左边的通道)TB_THUMBPOSITIONWM_LBUTTONUPTB_THUMBTRACK 通知消息之后TB_THUMBTRACK滑块移动(用户拖动了滑块)TB_TOPVK_HOME
实例如下:

void CThresholdDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){ UpdateData(TRUE);

 if (pScrollBar == GetDlgItem(IDC_SLIDERA)) //获取slider的指针;  m_nA = m_nPosA;      //改变编辑框A的数值; else  m_nB = m_nPosB;      //改变编辑框B的数值;    //refresh(); UpdateData(FALSE); refresh();

 CDialog::OnHScroll(nSBCode, nPos, pScrollBar);}