2010-12-07 57 views
1

我正在創建一個實用程序,它使用全局掛鉤在桌面上的其他窗口上繪製一些(用戶可定製的)圖標。由於位圖對象是特定於某個進程的,因此我在繪製它們之前爲每個進程中的這些圖標創建單獨的HBITMAP對象,並且所有這些句柄都存儲在dll中的共享段中。我可以刪除在另一個進程中創建的HBITMAP對象嗎?

現在,當我的程序(由用戶)刪除一個圖標時,應刪除這些不同進程中的所有HBITMAP對象。我可以在我的主程序中使用DeleteObject()來做到這一點,還是必須刪除創建過程中的每個句柄?

回答

1

當然,你必須從創建它們的進程中刪除它們 - 即使它適用於你,對於不同的Windows版本它可能不會。

1

處理GDI對象通常是一個私有過程。無論如何你可以檢查DeleteObject的返回值。

0

我只是在猜測這個......
你應該使用一個鉤子來鉤住不同的窗口。

相關問題