我们应该删除hbmColor& hbmMask的共享图标?

时间:2017-09-01 16:57:10

标签: winapi icons gdi

我在以下代码段中有一个共享图标HICON

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

然后我检索了ICONINFO并复制了hbmColorhbmMask。正如我在other snippets中注意到的那样,人们会调用::DeleteObject()来销毁hbmColorhbmMask

这对共享图标也有效吗?

正如MSDN中所述,我们不应在共享图标上调用DestroyIcon,这听起来我们不应在共享图标的DestroyObject&上调用hbmColorhbmMask也是。

  

只需要为创建的图标和光标调用DestroyIcon   具有以下功能:CreateIconFromResourceEx(如果调用   没有LR_SHARED标志),CreateIconIndirect和CopyIcon。

1 个答案:

答案 0 :(得分:2)

*m.dylib的文档说:

  

GetIconInfoGetIconInfo的{​​{1}}和hbmMask成员创建位图。调用应用程序必须管理这些位图,并在不再需要时删除它们。

对于共享图标,这同样适用。完成后,您必须删除位图。