c++ATL 滑动条控件Slider CTrackBarCtrl

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




阅读更多
上一篇c++ATL中的checkbox控件
下一篇iOS 通过GCDAsyncSocket建立tcp链接
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭