function ExtractIconEx(lpszFile: PChar; nIconIndex: Integer;
var phiconLarge, phiconSmall: HICON;
nIcons: UINT): UINT;
Функция ExtractlconEx принимает следующие параметры:
• lpszFile – путь файла, из которого извлекаются значки;
• nIconlndex – номер первого извлекаемого значка; нумерация начинается с нуля (если номер равен -1 и параметры piconLarge и piconSmall нулевые, то функция возвращает количество значков в файле);
• piconLarge, piconSmall – ссылки на переменные типа HI CON (либо на первые элементы массива array. of HICON) для помещения в них дескрипторов больших и малых значков соответственно;
• nIcons – количество извлекаемых значков (по сути, может быть количество элементов в передаваемых в функцию массивах: лишние элементы не будут заполнены).
Функция возвращает количество значков, извлеченных из файла, или количество значков в файле при соответствующем значении параметра nlconlndex.
В листинге 4.36 используется не совсем оптимальный способ извлечения значков из файла – по одному. Однако он подойдет для большинства случаев. Другой (но не единственный) вариант – использование массива. Тогда функцииЕх^асИсопЕх передаются первые элементы массивов для дескрипторов значков (функции нужен адрес начала массива), а в качестве последнего параметра – количество элементов в массиве. Таким образом, если количество значков в файле превзойдет количество элементов в массиве, то вызов функции ExtractlconEx можно будет повторить, передав в качестве параметра nlconlndex значение, возвращенное функцией ExtractlconEx, умноженное на номер вызова функции (начиная с нуля).
Можно также использовать динамический массив, предварительно установив его размер, вызвав функцию ExtractlconEx с параметром nlconlndex, равным -1. Установить значения параметров piconLarge, piconSmall в ноль (не меняя объявления функции) можно, объявив указатель на HICON (AHICON), присвоив ему значение nil и передав его в качестве упомянутых параметров в функцию.
На рис. 4.11 приводится внешний вид формы приложения после извлечения значков из файла Explorer. ехе.
Обработчик нажатия кнопки Загрузить значки представленной н а рис. 4.11 формы приводится в листинге 4.38.
Рис. 4.11. Пример извлеченных из ЕХЕ-файла значков