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
因为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++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- C++ Custom Control控件向父窗体发送对应的消息
- C++中拷贝构造函数的应用详解
- VisualStudio 使用Visual Leak Detector检查内存泄漏