我们应该删除共享图标的hbmColor&hbmMask吗?
问题描述:
我从以下代码片段中看到一个共享图标HICON
。我们应该删除共享图标的hbmColor&hbmMask吗?
::SendMessageTimeout(hwnd, WM_GETICON, ICON_SMALL, 0, SMTO_ABORTIFHUNG, 500, &icon)
然后我检索其ICONINFO
并复制出hbmColor
和hbmMask
。正如我在other snippets中注意到的那样,人们随后致电::DeleteObject()
销毁hbmColor
和hbmMask
。
这是否也适用于共享图标?
正如MSDN提到的,我们不应该在共享图标,这听起来好像我们不应该呼吁DestroyObject
共享图标的hbmColor
& hbmMask
或者调用DestroyIcon
。
它是只需要调用DestroyIcon的图标和光标创建 具有以下功能:CreateIconFromResourceEx(好象叫 没有LR_SHARED标志),CreateIconIndirect和CopyIcon。
答
的文档GetIconInfo
说:
GetIconInfo
创建的ICONINFO
的hbmMask
和hbmColor
成员的位图。调用应用程序必须管理这些位图,并在不再需要时将其删除。
对于共享图标也是如此。当你完成它们时你将不得不删除位图。
它共享图标,它不共享ICONINFO结构。 –