您的位置:首页 > 编程语言 > C语言/C++

c++ATL 滑动条控件Slider CTrackBarCtrl

2015-07-07 16:10 1061 查看
1、获取滑动条控件

因为wfc中滑动条控件的名字和ATL中是不一样的

在wfc中叫做CSliderCtrl 在ATL中叫做CTrackBarCtrl

CTrackBarCtrl  pSlidCtrl=(CTrackBarCtrl)GetDlgItem(IDC_SLIDER_ALAEM_TIME);

2、基本设置

pSlidCtrl.SetRange(0,120);设置slider的范围

pSlidCtrl.SetTicFreq(15);//设置刻度间隔,如果想要将刻度显示出来需要将TBS_AUTOTICKS| WS_TABSTOP这两个属性设置上,同时 TBS_TOOLTIPS如果

想显示出提示条 则需要设置一下该属性,当然你也可以设置滑动条横放还是竖放

 这是我所设置的最终的效果图

3、其他设置函数

简单的记录一下其他的一些常用的函数

BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0)修改样式

void SetThumbLength(int nLength)设置thumb的长

void SetPos(int nPos)设置进度条位置

UINT GetPos() const 获取进度条位置

当然还有很多别的函数

4、事件响应

响应的是事件WM_HSCROLL

例如

LRESULT BDAlarmStatusFilDlg::OnHScroll(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/,
BOOL& /*bHandled*/)


CTrackBarCtrl  pSlidCtrl=(CTrackBarCtrl)GetDlgItem(IDC_SLIDER_ALAEM_TIME);

if (wParam==SB_ENDSCROLL) 
{
int m_nCur=pSlidCtrl.GetPos();//取得当前滑块位置值

}

}

你可以选择在滑动的时候直接响应用户,同时也可以在用户完鼠标松开的时候响应,上面函数SB_ENDSCROLL的意思就是在滑动结束用户松开鼠标的时候对进行事件的响应

#define SB_LINEUP
          0

#define SB_LINELEFT         0

#define SB_LINEDOWN         1

#define SB_LINERIGHT        1

#define SB_PAGEUP           2

#define SB_PAGELEFT         2

#define SB_PAGEDOWN         3

#define SB_PAGERIGHT        3

#define SB_THUMBPOSITION    4

#define SB_THUMBTRACK       5

#define SB_TOP              6

#define SB_LEFT             6

#define SB_BOTTOM           7

#define SB_RIGHT            7

#define SB_ENDSCROLL        8

如果你采用的是竖放的滑动条那么事件响应需要使用WM_VSCROLL
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息