鼠标悬停事件触发机制-鼠标在不离开控件的前提下一直触发悬停事件

pink-zhu 2017-02-16 03:02:05
自定义控件,在控件上绘制了几个图形,例如三角、正方形、圆形。鼠标点击事件:点击鼠标时根据鼠标位置判断哪个图形在该位置,然后选中该图形。现在希望当鼠标悬停一段时间后,判断鼠标悬停在哪个图形上,然后选中该图形。但是,鼠标悬停事件的触发机制是在鼠标进入控件并悬停时触发,仅触发一次;之后,只要鼠标不离开控件,无论鼠标是否移动,都不触发悬停事件。因此通过悬停事件无法达到跟鼠标事件一样的效果。
PS:编程软件使用的是VS2010,语言:c#
要求:如何实现鼠标不离开控件,只要悬停,均触发悬停事件;如果不能实现,请给出证明。
请大神们帮帮忙,给点建议,急急急!!!
...全文
989 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2017-02-17
  • 打赏
  • 举报
回复
bravery36 2017-02-17
  • 打赏
  • 举报
回复
引用 3 楼 baidu_28217989 的回复:
[quote=引用 2 楼 bravery36 的回复:] 手动处理mousemove事件,一定时间没有触发mousemove时调用对应函数。
我有用定时器来实现,mousemove触发之后的两秒后判断鼠标位置与两秒之前是否一致,来判断鼠标是否悬浮,是可以实现相同效果的,但是对方认为这就不是鼠标悬浮事件了。需求上要求的是:扩充鼠标事件,并将操作响应的各个事件封装成函数接口,方便用户根据自身操作习惯自行设置各鼠标操作所响应的事件,主要包括:鼠标悬停等等。所以只能考虑鼠标悬停事件是否可能一直触发,而不是仅在进入控件时触发一次。[/quote] 所有事件都是由某些方法实现的,你应该考虑的是实现的好坏,悬浮不是一个原生态的wm事件。我觉得你的timer实现不够好,光是在两秒后判断坐标是不精准的,标准的效果只能是wm_mousemove在一定时间内没有触发才能叫悬停。
pink-zhu 2017-02-17
  • 打赏
  • 举报
回复
引用 4 楼 u010165006 的回复:
鼠标不动,Windows也不产生事件。只能轮询了。
轮询的话,不就跟定时器的差不多,不是通过悬浮事件触发的,还是不能算是鼠标事件。有没有方法改写控件的悬浮事件,令该悬浮事件一直触发?或者不可以也要有个理由才可以
xiaohuh421 2017-02-17
  • 打赏
  • 举报
回复
默认肯定是不会提供你说的这种机制的. 你可以这样做. 当鼠标移动到某个控件后, 启动一个定时器, 只要达到时间, 鼠标还没有动, 就判定它在控件上悬停了. 鼠标移动就重置定时器,并更新 当前控件和鼠标位置信息
ooolinux 2017-02-16
  • 打赏
  • 举报
回复
鼠标不动,Windows也不产生事件。只能轮询了。
pink-zhu 2017-02-16
  • 打赏
  • 举报
回复
引用 2 楼 bravery36 的回复:
手动处理mousemove事件,一定时间没有触发mousemove时调用对应函数。
我有用定时器来实现,mousemove触发之后的两秒后判断鼠标位置与两秒之前是否一致,来判断鼠标是否悬浮,是可以实现相同效果的,但是对方认为这就不是鼠标悬浮事件了。需求上要求的是:扩充鼠标事件,并将操作响应的各个事件封装成函数接口,方便用户根据自身操作习惯自行设置各鼠标操作所响应的事件,主要包括:鼠标悬停等等。所以只能考虑鼠标悬停事件是否可能一直触发,而不是仅在进入控件时触发一次。
bravery36 2017-02-16
  • 打赏
  • 举报
回复
手动处理mousemove事件,一定时间没有触发mousemove时调用对应函数。
pink-zhu 2017-02-16
  • 打赏
  • 举报
回复
该自定义控件相当于画布,即在不离开画布的基础上,鼠标悬停在某处,则触发悬停事件,根据鼠标位置判断该处的图形并选中。鼠标判断及图形选中均已实现。但是鼠标悬停却只在鼠标进入画布的时候触发一次,之后,无论鼠标如何移动,悬停在任意位置,只要鼠标不离开画布,悬停事件均不触发。目前是希望悬停事件触发的,希望大神们指点指点,如何实现悬停事件一直触发。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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