2012-05-30 82 views
4

我正在編寫有趣的小工具。我希望能夠在與原始鼠標不同的位置繪製第二個(或更多)鼠標指針圖標,但要根據原始鼠標的移動來移動它。繪製鼠標指針圖標?

我知道如何跟蹤鼠標的移動,但我不知道如何繪製/重繪鼠標指針;誰能幫忙?通過調用

CURSORINFO ci; 
GetCursorInfo(&ci); 

接下來,您可以得出一個光標:

回答

1

可以這樣做:(1)使用LoadCursor(http://msdn.microsoft.com/en-us/library/aa924571.aspx)從應用程序中抓取當前鼠標光標。只需指定NULL和所需的光標。或者只是爲光標加載一個位圖。現在,你有一個位圖。

(2)下一步是獲取桌面的Device上下文:GetWindowDC(NULL)更多:http://msdn.microsoft.com/en-us/library/dd144947%28v=vs.85%29.aspx。 (3)您需要將CreateCompatibleBitmap(http://msdn.microsoft.com/en-us/library/aa922174)應用於(1)處的圖像,並且在(2)

處獲得的DC有很大的可能性

(4)現在,使用一些BitBlt將位於(2)處獲得的DC的位OUT複製到想要放置光標的位置的保存圖像(您需要創建這些圖像)。

現在,將(3)處獲得的圖像放到您在(2)處獲得的桌面DC上的所需位置。

當用戶移動鼠標時,將桌面上的圖像與(4)處保存的數據一起恢復。釋放所有你不需要的東西(是的,這是強制性的)。

並從(1)重新啓動。

這兩個更多的鏈接可能會有所幫助:http://www.winprog.org/tutorial/bitmaps.htmlhttp://msdn.microsoft.com/en-us/library/dd183402%28v=vs.85%29.aspx

祝你好運!

+0

這絕不會以乾淨的方式工作。設想一個顯示動態內容的窗口,如顯示動畫的瀏覽器。您想要在用戶移動鼠標時複製舊內容,然後獲得大量文物。簡單地忘記它。 – Elmue

6

您可以使用下面的代碼

DrawIcon(ContextDC, YourXPosition, YourYPosition, ci.hCursor); 

如果您需要了解光標的其他信息,如熱點例如,檢查ICONINFO結構:

ICONINFO ii; 
GetIconInfo(ci.hCursor, &ii); 
+0

這是我正在尋找的答案,因爲DrawCursor()不存在。 MSDN說:DrawIcon()函數:繪製一個圖標或光標到指定的設備上下文。 – Elmue