C++鼠标悬停事件

问题描述:

好吧如果对象没有移动,在事件上创建鼠标非常容易。但是物体会每隔50毫秒移动一次的问题。 它不是一个字符串行,所以我可以创建一个脚本它是一个圆。 我曾经使用getcursorpos()。比得到对象x和y。 另一个问题是这样的C++鼠标悬停事件

p X--------------------- 

y 
| 
|  
| 
|  cursor 
| 
| 
| 

那里说P上的X和Y位置生病搞定。 其中是光标在中间如果生病获得光标的位置并将它与x和y比较它们将不匹配。 加上对象继续移动,因此很难跟踪。 有什么想法? 对不起,如果我说的是混乱,我不能更好地解释它。

+0

你使用的是什么框架? – 2010-08-13 05:49:03

+0

win32是你在问什么? – Ramilol 2010-08-13 05:55:16

+0

您正在使用纯Win32的GUI?您正在跟踪的对象是什么,自定义绘制或某个子窗口?如果你不告诉我们你在用什么方法来给出有用的建议。 – 2010-08-13 06:07:00

如果按照GetCursorPos文档也说:

一个指向 接收屏幕POINT结构协调 光标

但是当你画你要提供客户坐标。这是您需要从屏幕坐标转换为客户端坐标的问题,其功能名称为ScreenToClient

但不是用手跟踪光标位置,我建议使用WM_MOUSEMOVE事件,它已经为您提供了客户端坐标。

+0

+1的屏幕/客户端坐标。但是如果鼠标保持静态并且将eclipse移动到鼠标上,则需要添加更多东西。 – YeenFei 2010-08-13 06:19:09

+0

我找不到这个事件的很多细节 – Ramilol 2010-08-13 06:21:21

+0

@YeenFei你可以用WM_MOUSEMOVE来跟踪鼠标的最后位置,然后用WM_TIMER来移动这个圆圈,你可以添加一个检查最后一个光标的位置是关闭这个圈子。 Windows使用基于事件的编程模型,您必须根据系统提供的事件(鼠标移动,鼠标点击,定时器触发,按钮点击等)设计程序。 – Ismael 2010-08-13 06:31:31