关闭

c++ATL 滑动条控件Slider CTrackBarCtrl

标签: atlsliderc++WTLCTrackBarCtrl
427人阅读 评论(0) 收藏 举报

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




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6602次
    • 积分:257
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    最新评论