我會如何將文本放置在Windows桌面上?我被告知GetDesktopWindow()是我需要的,但我需要一個例子。如何在Windows桌面上繪製文字?
回答
This question might help you。這與你在這裏提出的問題大致相同,並提供了一個完整的例子來說明如何去做。
我假設您的最終目標是在桌面上顯示某種狀態信息。
你將不得不採取任:
注入DLL資源管理器中的進程和子類的桌面窗口(
SysListView32
在Progman
窗口的層次結構的底部)來繪製你的文字直接在其上。創建一個不可激活的窗口,其背景使用
PaintDesktop
繪製並在其上繪製文本。
第一個解決方案是最具侵入性,且很難編碼,所以我不會推薦它。
第二種解決方案允許最大的靈活性。沒有「無證件」或依賴於Explorer的特定實現,甚至只是將Explorer作爲shell。
爲了防止點擊時窗口被置頂,可以在Windows 2000及更高版本上使用擴展窗口樣式WS_EX_NOACTIVATE
。在低級系統上,您可以處理WM_MOUSEACTIVATE
消息並返回MA_NOACTIVATE
。
如果您需要通過使用分層窗口來實現真正的透明度,則可以使用PaintDesktop
調用,但概念保持不變。我寫了另一個答案,詳細說明如何使用GDI +正確地使用alpha來完成分層窗口。
爲什麼不只是在桌面壁紙圖像文件中繪製文本?
如果您不必經常更新信息並且您有壁紙圖像,則此解決方案將可行。
人們可以很容易地使用CImage類加載壁紙圖片,CImage::GetDC()獲得設備上下文繪製成,然後保存新的圖像,最後更新桌面壁紙的新形象。
我已經想到了,但數據必須經常更新。 – sowas 2009-09-10 14:17:16
我還沒有試過,但我相信你可以做到以下幾點:
- 使用GetDesktopWindow檢索桌面窗口的句柄
- 使用SetWindowLong函數的窗口消息處理程序指向你自己的程序
- 在你的過程中,處理WM_PAINT消息(或其他)並繪製你所需要的。
- 在您的proc中,調用原始消息處理程序(由SetWindowLong返回)。
不是100%確定它能工作,但看起來應該是這樣,因爲這是窗口子類的正常方法。
-don
這將崩潰兩次:一次是在EXPLORER.EXE不能調用自己的程序(它在你的過程,而不是瀏覽器)。如果我們可以忽略它,當你嘗試在資源管理器的進程中調用原始的WndProc時,它會崩潰,而不是你的。 – MSalters 2009-09-15 15:28:08
如果你的目的是要產生類似的邊欄,你可能只是想創建一個或多個layered windows。這也將讓你處理鼠標點擊和輸入的其他正常來源,如果你提供的alpha通道信息,Windows將確保您的窗口在任何時候都正確繪製。如果你不希望窗口是互動的,用適當的方式(如WS_EX_NOACTIVATE)像少佐建議。
- 1. 如何在桌面上繪製文字?
- 2. 如何直接在桌面上繪製?
- 3. 如何直接在Windows桌面上繪製C#?
- 4. 如何在Lion中繪製桌面?
- 5. 在桌面上直接繪製?
- 6. NSWindow在桌面圖標上繪製
- 7. 在桌面上的圖標下繪製
- 8. 如何在桌面上插入文字
- 9. 在C中繪製桌面#
- 10. 如何正確在桌面上繪製矩形的問題
- 11. 如何在Windows 8 Metro界面上面繪製?
- 12. 如何在圖片上繪製文字?
- 13. 如何在3D點上繪製文字?
- 14. Gdiplus DrawString在遠程桌面上繪製透明文本
- 15. 繪製桌面背景(WIN32)
- 16. 如何在WriteableBitmap上繪製Windows Phone 8.1?
- 17. MacOSX /可可:如何更改桌面內容視圖/如何直接在桌面上繪製背景?
- 18. 屏幕保護程序如何在Windows 8中繼續繪製桌面?
- 19. svg上面的文字繪製路徑
- 20. 在Gridview上繪製文字
- 21. 在桌面中間繪製圓圈
- 22. 如何繪製圖像上的文字
- 23. 在Mac OS X的桌面上繪圖
- 24. 使用C#在桌面上繪圖#
- 25. 定製桌面上
- 26. 如何繪製在一個平面上
- 27. 如何在C#中有效地繪製桌面?
- 28. 如何在桌面視圖中繪製線條,圓圈
- 29. Windows Phone:如何在wirteable位圖上繪製數字?
- 30. 在桌面上用鼠標指針繪製
你爲什麼要這麼做?是否還沒有內置於Windows中的通知系統,您可以使用,而不是將文本寫入桌面窗口?提示:可能有。 – Pod 2009-09-09 23:08:35
我想製作一些類似Windows的工具條。主要是作爲一個學習的經驗,但我認爲這將是有益的,以及... – sowas 2009-09-10 14:19:59