2010-08-13 224 views
0

好吧如果對象沒有移動,在事件上創建鼠標非常容易。但是物體會每隔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

回答

2

如果按照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