2011-01-21 34 views

回答

1

如果你只需要光标位置,你可以使用GetCursorPos()。请记住,GetCursorInfo()和GetCursorPos()返回屏幕坐标。使用ScreenToClient()转换为客户区域偏移量。

虽然OP不想使用Windows的消息,我只是想提的东西作为一个旁注。
我发现的东西是将光标位置作为消息处理程序的一部分(例如WM_SETCURSOR),大多数文献都建议使用GetMessagePos()在消息发送时检索光标的位置。不过,其位置之前的鼠标移动了,没有之后。因此,当尝试在某个区域进行鼠标悬停检测时,该位置在像素后面返回“滞后”。

+2

我个人尽量避免调用`GetCursorPos`,因为在64位Vista(可能是64位XP),在WOW64下的错误。当您传递的指针位于高地址空间(> 2GB)时,该函数将失败。这在Windows 7中得到了修复,但我仍然更喜欢`GetCursorInfo`,因为它可以在任何地方使用。 – 2011-01-25 09:00:23