MFC CSliderCtrl滑块直接定位到鼠标的点击x坐标
来源:互联网 发布:在淘宝买steam游戏 编辑:程序博客网 时间:2024/05/18 02:10
项目中使用到CSliderCtrl控件来设置并显示当前进度。在设置进度时,每点击一下,滑标就会往相应的方向滑动一个步距。然而,这并不符合使用习惯:希望滑标直接定位到鼠标点击处。
实现对CSliderCtrl消息的响应时,在父窗口类中重载OnNotify虚函数:
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
BOOL CMainFrame::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { // TODO: Add your specialized code here and/or call the base class NMHDR* nmhdr = (LPNMHDR)lParam; if(ID_SLIDER_FOR_REPLAY == wParam && NM_RELEASEDCAPTURE == nmhdr->code) { CPoint point; GetCursorPos(&point); //获取点击坐标 //do something here //return FALSE; } return CMDIFrameWndEx::OnNotify(wParam, lParam, pResult);}
NM_RELEASEDCAPTURE,是子控件被鼠标按住拖动到适当位置以后鼠标释放时子控件向父控件产发送的消息,对于Slider来说就是每次滑块被鼠标拖曳完鼠标释放的时候滑块给Slider发送的消息。
另:虽然在MSDN中表明NMHDR(Contains information about a notification message)和NM_RELEASEDCAPTURE的Minimum supported client为Windows Vista [desktop apps only],但在XP上测试运行正常。
然后,就可以将点击坐标转换为滑标在滑道的相应位置:
//... CRect rect; m_pSlidCtrl.GetWindowRect(&rect); //获取CSliderCtrl控件相对屏幕的位置 CRect channelRect; m_pSlidCtrl.GetChannelRect(&channelRect); //获取滑道相对于控件的位置 int pointX = clickX - channelRect.left - rect.left; //clickX是上一段代码清单中获取到的点击横坐标 int rangeWidth = channelRect.Width(); int pos = (int)pointX * m_pSlidCtrl.GetRangeMax() / rangeWidth; m_pSlidCtrl.SetPos(pos) //...
VS2010生成的exe文件图标使用的是Icon下ID值最小的图标,顺次为IDR_MAINFRAME、IDR_ICONTETYPE…
0 0
- MFC CSliderCtrl滑块直接定位到鼠标的点击x坐标
- CSliderCtrl的自绘制和鼠标定位滑块
- CSliderCtrl鼠标点击精确定位
- mfc/vc slider control控件 鼠标左键点击后直接滑到点击的位置
- 鼠标精确控制CSliderCtrl控件的滑块
- VC MFC滑块(CSliderCtrl)控件
- VC MFC滑块(CSliderCtrl)控件
- 在CSliderCtrl控件移动滑块动态的显示tooltip
- 有皮肤的滑块控件CSliderCtrl->CZipSliderCtl 类
- MFC 获取picture控件的鼠标点击坐标位置的方法
- MFC 获取picture控件的鼠标点击坐标位置的方法
- MFC 获取picture控件的鼠标点击坐标位置的方法
- MFC 获取picture控件的鼠标点击坐标位置的方法(PreTranslateMessag)
- js获取鼠标点击位置(界面的位置,可以使用top和left直接定位的)
- Unity 3d 射线(获得鼠标点击的坐标[x,y,z])
- JS中找到鼠标点击的坐标
- Javascript获得鼠标点击图片的坐标
- 获取鼠标点击的坐标处理
- hdu1075 字典树
- android上传图片到服务器(使用base64字节流的形式通过 AsyncHttpClient框架传输)
- DataStructures:algorithm analysis
- 最简单安装svn插件方法
- JAVA单例模式
- MFC CSliderCtrl滑块直接定位到鼠标的点击x坐标
- OJ 系列之字符串基本操作
- 从框架到完整项目搭建,实战项目《约个球》(1)-从splashActivity说起
- hive组件二次开发之HiveF
- jfreechart生成报表(定时器中)
- iOS 控件——UILable多文本垂直方向对齐的设置
- Android退出应用最优雅的方式
- kilo版openstack的dashboard在session超时后重新登录报错解决办法
- EasyUi combotree 使用总结