2017-09-01 152 views
0

我从以下代码片段中看到一个共享图标HICON我们应该删除共享图标的hbmColor&hbmMask吗?

::SendMessageTimeout(hwnd, WM_GETICON, ICON_SMALL, 0, SMTO_ABORTIFHUNG, 500, &icon) 

然后我检索其ICONINFO并复制出hbmColorhbmMask。正如我在other snippets中注意到的那样,人们随后致电::DeleteObject()销毁hbmColorhbmMask

这是否也适用于共享图标?

正如MSDN提到的,我们不应该在共享图标,这听起来好像我们不应该呼吁DestroyObject共享图标的hbmColor & hbmMask或者调用DestroyIcon

它是只需要调用DestroyIcon的图标和光标创建 具有以下功能:CreateIconFromResourceEx(好象叫 没有LR_SHARED标志),CreateIconIndirect和CopyIcon。

+3

它共享图标,它不共享ICONINFO结构。 –

回答

2

的文档GetIconInfo说:

GetIconInfo创建的ICONINFOhbmMaskhbmColor成员的位图。调用应用程序必须管理这些位图,并在不再需要时将其删除。

对于共享图标也是如此。当你完成它们时你将不得不删除位图。

相关问题