Нужно ли вызывать DestroyIcon, если я сделал это с помощью LoadIconWithScaleDown? - PullRequest
6 голосов
/ 11 марта 2011

Я создаю иконки в своем приложении, используя LoadIconWithScaleDown().Я также возвращаюсь к CreateIconFromResourceEx(), если предпочтительная функция недоступна.

Документация для DestroyIcon() гласит:

Вызывать DestroyIcon необходимо только для значков и курсоров, созданных со следующими функциями: CreateIconFromResourceEx (если вызывается без флага LR_SHARED), CreateIconIndirect и CopyIcon.Не используйте эту функцию для уничтожения общего значка.Общий значок действителен, пока модуль, из которого он был загружен, остается в памяти.Следующие функции получают общий значок.

  • LoadIcon
  • LoadImage (если вы используете флаг LR_SHARED)
  • CopyImage (если вы используете флаг LR_COPYRETURNORG и параметр hImage является общим значком)
  • CreateIconFromResource
  • CreateIconFromResourceEx (если вы используете флаг LR_SHARED)

Примечание: я не передаю LR_SHARED в CreateIconFromResourceEx();возможно, мне следует.

Я хотел бы знать, нужно ли мне звонить DestroyIcon() для значков, сделанных с помощью LoadIconWithScaleDown()?

1 Ответ

2 голосов
/ 11 марта 2011

Я бы сказал, что да, так как HICON, который вы получаете, кажется, не передается в соответствии с документацией. Очевидно, что Windows не хочет, чтобы вы уничтожали значки, чьи дескрипторы являются общими, но здесь это не так, и если вы переходите к другой функции, которая принимает LR_SHARED, но вы не передаете флаг, то это означает, что ваш процесс владеет значком обрабатывать, и вы должны уничтожить его, когда вы закончите, используя его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...