2011-03-11 110 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

相关问题