CSliderCtrl的滑动距离的问题

zhuobattle 2007-07-09 02:22:19
定义了一个CSliderCtrl对象,
CSliderCtrl m_Slider.
在初始函数里面初始化.

在函数OnHScroll捕捉到鼠标点击控件的消息.
但是为啥捕捉到的距离都与实际点击距离相差很多呢.
假设我设置m_Slider.setRange(0,1000);
然后鼠标点在大概结束处,而利用GetPos函数得到的好像大概是200左右.
好像它是一个page一个page的跳的,有没有什么办法解决啊.谢谢各位大侠.
...全文
286 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
joyjjjz 2008-09-28
  • 打赏
  • 举报
回复
同喜同喜,谢谢lz
zhuobattle 2007-07-11
  • 打赏
  • 举报
回复
up~
一条晚起的虫 2007-07-11
  • 打赏
  • 举报
回复
恭喜
谢谢lz
zhuobattle 2007-07-11
  • 打赏
  • 举报
回复
目前已经解决该问题,为了方便后人,我把解决方法帖一下.

1.定义自己的CGoodSliderCtrl类,继承自CSliderCtrl
2.添加鼠标响应函数OnLButtonDown
3.在CGoodSliderCtrl::OnLButtonDown函数里面添加如下代码:

//得到控件本身矩形大小
CRect mSliderRect;
GetWindowRect(&mSliderRect);
//设置的控件range值
int mMinRg,mMaxRg;
GetRange(mMinRg,mMaxRg);

//得到目前的Pos值
DWORD nowPos=GetPos();
//计算鼠标点击后的pos值
DWORD mouseClickpos=(point.x)*(mMaxRg-mMinRg)/mSliderRect.Width();

//设置当前需要滑动的距离
SetPageSize(abs(mouseClickpos-nowPos));
//每次设置新的CSliderCtrl移动page值,可以实现要求。
zhuobattle 2007-07-10
  • 打赏
  • 举报
回复
嗯,写太快了是SetRange(0, 1000);可这个跟距离关系不大啊.
我做的是一个简单播放器,鼠标点击不到位的问题.
菜牛 2007-07-09
  • 打赏
  • 举报
回复
貌似只有SetRange,没有setRange吧。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧