Набор функций для работы с иконками. Позволяет работать как с файлами, так и с ресурсами. Лицензия GNU (GNU GPL ver.2).
Перечислю группы функций:
-
SizeIcon
Набор функций позволяющий узнать размер иконки как по её хэндлу, так и сразу из файла/ресурса с указанием интересуемого фрейма, т.е. не загружая саму иконку.
-
GetIconLang
Одна функция. Узнаёт количество языков для иконки по её имени в разделе RT_GROUP_ICON (сколько языковых вариантов иконки существует).
-
GetIconCoun
Одна функция. Узнаёт количество иконок внутри DLL/EXE (равно кол-ву разделов RT_GROUP_ICON), с учётом или без языковых вариантов иконок.
-
GetIconFrames
Набор функций позволяющий узнать количество фреймов в файле иконки, в указанном ресурсе иконки (с учётом/без учёта языка иконки), или общее количество фреймов во всех иконках в ресурсах.
-
GetIconGroupNames(Ex)
Две функции для получения всех имён иконок из ресурсов с учётом/без учёта языка.
-
LoadIcon
Собственно, самый главный набор функций - получение хендла нужного фрейма иконки из файла, из ресурса по его имени (с учётом/без учёта языка) или по индексу нужного фрейма из ресурсов.
-
ExtractIco
Тоже интересный набор функций. Позволяет сохранить нужный фрейм/всю иконку из ресурса/файла с учётом/без учёта языка.
В случае неудачной отработки любой из функций причину можно узнать с помощью вызова
GetLastError().
Также приведён тестовый проект под MS VC++. В нём демонстрируется работа всех вышеописанных функций. Данная программа отображает все битмапы и фреймы иконок из указанного EXE/DLL файла и из всёх ICO файлов выбранного каталога.
Отображение картинок выполняется с учётом альфа-канала! (946 Кб)
Демо - тестовый пример + исxодники (908 Кб) - под VC9 (WTL)