2011-01-21 61 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