我在以下代码段中有一个共享图标HICON
。
::SendMessageTimeout(hwnd, WM_GETICON, ICON_SMALL, 0, SMTO_ABORTIFHUNG, 500, &icon)
然后我检索了ICONINFO
并复制了hbmColor
和hbmMask
。正如我在other snippets中注意到的那样,人们会调用::DeleteObject()
来销毁hbmColor
和hbmMask
。
这对共享图标也有效吗?
正如MSDN中所述,我们不应在共享图标上调用DestroyIcon
,这听起来我们不应在共享图标的DestroyObject
&上调用hbmColor
。 hbmMask
也是。
只需要为创建的图标和光标调用DestroyIcon 具有以下功能:CreateIconFromResourceEx(如果调用 没有LR_SHARED标志),CreateIconIndirect和CopyIcon。
答案 0 :(得分:2)
*m.dylib
的文档说:
GetIconInfo
为GetIconInfo
的{{1}}和hbmMask
成员创建位图。调用应用程序必须管理这些位图,并在不再需要时删除它们。
对于共享图标,这同样适用。完成后,您必须删除位图。