2011-03-11 96 views
5

我使用LoadIconWithScaleDown()在我的應用程序中創建圖標。如果首選功能不可用,我也會回到CreateIconFromResourceEx()如果我使用LoadIconWithScaleDown創建它,我需要調用DestroyIcon嗎?

DestroyIcon()狀態的文檔:

它是隻需要調用 DestroyIcon使用以下功能創建圖標和光標 : CreateIconFromResourceEx(好象叫 沒有LR_SHARED標誌), CreateIconIndirect,和CopyIcon。 不使用此功能來銷燬 共享圖標。共享圖標的有效期限爲 ,因爲加載的模塊 仍保留在內存中。以下功能獲取 圖標。

  • LoadIcon
  • 的LoadImage(如果使用LR_SHARED標誌)
  • CopyImage(如果使用 的LR_COPYRETURNORG標誌和 畫佳參數是共享圖標)
  • CreateIconFromResource
  • CreateIconFromResourceEx(如果你使用 的LR_SHARED標誌)

注:我不是路過LR_SHAREDCreateIconFromResourceEx();也許我應該。

我想知道的是,是否需要撥打DestroyIcon()才能使用LoadIconWithScaleDown()製作的圖標?

+2

沒有記錄,痛苦。我將不得不投票是的。只是因爲該功能在其他情況下將不可用。當圖標被實際共享時,DestroyIcon有可能返回FALSE,所以不要炸彈。 – 2011-03-11 18:45:19

+0

@Hans非常感謝您的建議! – 2011-03-11 18:46:31

回答

2

我會說是的,因爲你回來的HICON似乎沒有根據文檔共享。 Windows顯然不希望你銷燬共享句柄的圖標,但這裏並不是這種情況,如果你退回到另一個需要LR_SHARED但是沒有通過標誌的函數,那麼這意味着你的進程擁有圖標處理,你應該在完成使用後將其銷燬。

+0

謝謝。這也是我的直覺告訴我的。 Windows何時共享圖標?和誰或什麼? – 2011-03-11 18:31:59

+0

例如,顯示在消息框(警告,錯誤,感嘆號等)上的圖標是共享的。您可以獲取這些句柄,並在默認消息框以外的地方使用它們。 – kprobst 2011-03-11 18:34:50

+0

和圖標可以傳遞給其他進程? – 2011-03-11 18:38:50

相關問題