MFC/VC中怎样实现slider滑块控件鼠标点击那里,就刚好落到点击位置
来源:互联网 发布:mac版office2016官网 编辑:程序博客网 时间:2024/06/09 00:14
想要让Slider Control实现在鼠标点击到哪, 滑动就移动到哪的效果,就像播放器的进度条和音量那样
正常的Slider Control点击时,只会移动一个固定的距离长度
于是想到了重载该类,自己实现该功能
网上搜到的一篇文章
http://blog.csdn.net/shen_wei/article/details/6692458
但这样还是有问题,
1. 想要拉动滑块时,用鼠标不好拿到滑块(可能鼠标单击时,直接响应到重载的LButtonDown函数去了)
2.在鼠标点击Slider快到最右边的时候,会直接跳到末端,非常诡异,找不到原因(这种情况网上也有人问,但我找不到那个网页了)
想了很多办法后,感觉这样子实现起来肯定不行
然后去codeproject上找现成的控件,也是费了好长时间才找到
CBitmapSlider
http://www.codeproject.com/Articles/4850/CBitmapSlider
以上是位图滑块代码下载地址,下面是才是主题:
首先自己写一个MySlider类。。该类继承 CSliderCtrl类。。
MySlider类响应LButtonDown消息来实现鼠标单击定位。。。
- void MySlider::OnLButtonDown(UINT nFlags, CPoint point)
- {
- // TODO: Add your message handler code here and/or call default
- CSliderCtrl::OnLButtonDown(nFlags, point);
- CRect rectClient,rectChannel;
- GetClientRect(rectClient);
- GetChannelRect(rectChannel);
- int nMax = 0;
- int nMin = 0;
- GetRange(nMin,nMax);
- int nPos =
- (nMax - nMin)*(point.x - rectClient.left - rectChannel.left)/(rectChannel.right - rectChannel.left);
- SetPos(nPos);
- }
void MySlider::OnLButtonDown(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call defaultCSliderCtrl::OnLButtonDown(nFlags, point);CRect rectClient,rectChannel; GetClientRect(rectClient); GetChannelRect(rectChannel); int nMax = 0;int nMin = 0;GetRange(nMin,nMax);int nPos = (nMax - nMin)*(point.x - rectClient.left - rectChannel.left)/(rectChannel.right - rectChannel.left); SetPos(nPos);}
在主界面中:(***Dlg.h)
添加:#include "MySlider.h"
MySlider m_MySlider;
(***Dlg.cpp) 关联变量。。。
- void CCSliderPosDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CCSliderPosDlg)
- // NOTE: the ClassWizard will add DDX and DDV calls here
- //}}AFX_DATA_MAP
- DDX_Control(pDX,IDC_SLIDER1,m_MySlider);
- }
void CCSliderPosDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CCSliderPosDlg)// NOTE: the ClassWizard will add DDX and DDV calls here//}}AFX_DATA_MAPDDX_Control(pDX,IDC_SLIDER1,m_MySlider); }
OnInitDialog()
{
m_MySlider.SetRange(0,100); //设置Slider的范围。。。
}
- MFC/VC中怎样实现slider滑块控件鼠标点击那里,就刚好落到点击位置
- mfc/vc slider control控件 鼠标左键点击后直接滑到点击的位置
- VC Slider控件,根据鼠标单击位置来显示滑块位置!
- 写新类让VC Slider控件,根据鼠标单击位置来显示滑块位置!
- VC Slider控件,根据鼠标单击位置来显示滑块位置!
- Qt 中实现在控件中点击鼠标,就在鼠标点击处加载图片的方法
- 鼠标在slide控件的任意位置上点击,滑块滑动到该位置是如何实现的,有什么属性吗?
- VS2010/MFC 获取ListControl鼠标点击位置
- VC中如何获取鼠标点击处控件的ID
- MFC-Slider(滑块)
- VC STATIC控件响应鼠标点击事件
- MFC 获取picture控件的鼠标点击坐标位置的方法
- MFC 获取picture控件的鼠标点击坐标位置的方法
- MFC 获取picture控件的鼠标点击坐标位置的方法
- MFC 获取picture控件的鼠标点击坐标位置的方法(PreTranslateMessag)
- VC++中轻松实现滑动(Slider)控件
- VC++中轻松实现滑动(Slider)控件
- VC++中轻松实现滑动(Slider)控件
- Linux 安装mysql 遇到的问题及解决办法
- Java的内存回收机制
- _javaScript_Html笔记
- 正则表达式整理
- Android 应用界面设计
- MFC/VC中怎样实现slider滑块控件鼠标点击那里,就刚好落到点击位置
- MyBatis学习(一)- 搭建MyBatis项目
- 关于dsound.h的问题error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
- 每日雕蟲一技[2013-04-04]搞定令老夫蛋碎的HighChart x轴单位显示稠密问题。
- UESTC1804: An A-Level Attack
- Android仿人人客户端(v5.7.1)——采用RelativeLayout做父容器,实现左侧滑动菜单(二)
- 基于PeterWang老师的Vim脚本配置
- 103 - Stacking Boxes
- 非常好的HTML5 Form表单示例