求助 MFC 鼠标移动值累加问题!!!!!!!!!

利威尔-斯密斯 2014-01-24 11:59:16
想完成一个功能

比如我按住鼠标左键,向下滑动,会记录一个值,这个值是我向下滑动了多远。
然后我每次做这样的操作,都可以记录这个值


但是现在遇到的问题是

我设置了一个m_offset的成员变量 用来记这个值
在用 一个m_point 记录鼠标左键按下的鼠标位置
如果在鼠标移动事件里用现在的point 减去m_point 得到这个offset

然后累加

那这个offset会一直累加 可能只移动了100的距离 但是因为事件响应了很多次 累加出来的值 就变成1000了

求高手给个思路
...全文
164 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐鹦鹉 2014-01-24
  • 打赏
  • 举报
回复
那是因为你自己思路不清楚。 你是需要记录鼠标每次移动的偏离呢?还是与起点的偏离,或者偏离的总距离?
  • 打赏
  • 举报
回复
引用 4 楼 happyparrot 的回复:
如果不是每次累加,那就在鼠标弹起时将offset设置为0
现在遇到的问题是 移动鼠标事件 在一次移动比如100 但是会调用N多次,累加的话 会累加非常多次
  • 打赏
  • 举报
回复
引用 4 楼 happyparrot 的回复:
如果不是每次累加,那就在鼠标弹起时将offset设置为0
那什么时机将这次的和上一次的累加额?
hhhh63 2014-01-24
  • 打赏
  • 举报
回复
我理解是不是可以这样: //propeties int m_pointy; //鼠标按下事件的Y位置,简称原点 int m_previous; //前一次鼠标移动事件的Y位置 int m_total; //鼠标的总位移, 当前到原点的位移 int m_offset; //前一次鼠标事件到当前事件的位移 //messages onlbottondown( CPoint p ) { m_pointy = p.y; //鼠标按下事件的Y位置,简称原点 m_previous = p.y; //前一次鼠标移动事件的Y位置 m_total = 0; //鼠标的总位移, 当前到原点的位移 m_offset = 0; //前一次鼠标事件到当前事件的位移 } onmousemove( CPoint p ) { m_offset = p.y - m_previous; m_total = p.y - m_pointy; m_previous = p.y; } 不知道这几个属性变量够不够用,想要每次的偏移量,要建一个缓冲区,记录m_offset。
快乐鹦鹉 2014-01-24
  • 打赏
  • 举报
回复
如果不是每次累加,那就在鼠标弹起时将offset设置为0
  • 打赏
  • 举报
回复
引用 楼主 u010967121 的回复:
想完成一个功能 比如我按住鼠标左键,向下滑动,会记录一个值,这个值是我向下滑动了多远。 然后我每次做这样的操作,都可以记录这个值 但是现在遇到的问题是 我设置了一个m_offset的成员变量 用来记这个值 在用 一个m_point 记录鼠标左键按下的鼠标位置 如果在鼠标移动事件里用现在的point 减去m_point 得到这个offset 然后累加 那这个offset会一直累加 可能只移动了100的距离 但是因为事件响应了很多次 累加出来的值 就变成1000了 求高手给个思路
是记录总距离,但是我并不想 鼠标按下和抬起 来计算 我是想根据鼠标移动来随时更新总距离的长度 比如我按住鼠标左键 向下滑 偏移是100,然后我鼠标抬起 在此按下 继续滑 这个偏移加上刚才的100
  • 打赏
  • 举报
回复
引用 1 楼 happyparrot 的回复:
那是因为你自己思路不清楚。 你是需要记录鼠标每次移动的偏离呢?还是与起点的偏离,或者偏离的总距离?
是记录每一次偏移的总和 就是总距离

15,980

社区成员

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

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