Есть созданная на delphi переменаая типа TIcon и есть иконка, извлеченная при помощи WINAPI (имеем HICON)
Кто знает, можно ли палитру ли из HICON назначить для класса TIcon?
Если кто знаком с delphi, то пример на delphi плиз...
27.01.03 11:47: Перенесено модератором из 'C/C++' — ПК
Судя по всему WinApi класса TIcon не понимает. Хотя если поможете решить задачу средствами Api буду оч признателен. В принципе тремуется извлечь определенную иконку из файла (dll, ico и т.д.), как большую так и маленькую и каждую сохранить в файле ico без потери качества.
Такое возможно?
Здравствуйте, alexnmsk, Вы писали:
A>Судя по всему WinApi класса TIcon не понимает. Хотя если поможете решить задачу средствами Api буду оч признателен. В принципе тремуется извлечь определенную иконку из файла (dll, ico и т.д.), как большую так и маленькую и каждую сохранить в файле ico без потери качества.
A>Такое возможно?
Вполне
1. Читаем доку по ExtractIconEx...
2. Извлекаем иконки из файла с помощью этой функции.
3. Создаем экземпляр класса TIcon.
4. Делаем следующее:
TIcon* icon = new TIcon;
DWORD CountIcons = (DWORD) ExtractIconEx("C:\\Test.exe",-1,NULL,NULL,0);
if(CountIcons != NULL)
{
HICON* iconLarge = new HICON[CountIcons];
HICON* iconSmall = new HICON[CountIcons];
if(ExtractIconEx("C:\\Test.txt",0, iconLarge, iconSmall,CountIcons))
{
String sFileName = "C:\\";
for(int i=0;i<CountIcons;i++)
{
icon->Handle = iconLarge[i];
icon->SaveToFile(sFileName + "large" + IntToStr(i) + ".ico");
DestroyIcon(iconLarge[i]);
icon->Handle = iconSmall[i];
icon->SaveToFile(sFileName + "small" + IntToStr(i) + ".ico");
DestroyIcon(iconSmall[i]);
} // for
} // if
delete [] iconLarge;
delete [] iconSmall;
} // if
delete icon;
В общем, где-то так... Код не компилил и не проверял — писал навскидку... Так чта все равно TFM на всякий случай...
Здравствуйте, Flamer, Вы писали:
[скипаем...

]
Собственно здесь повторился мой уже существующий код на Delphi. Все бы было очень просто, если б не было сложнее. Не знаю, как на С (нет компилятора), а на Delphi при этом из 256 цветных иконок получаю страшненькие 16-цветные. В этом и заключается суть проблемы..
Здравствуйте, alexnmsk, Вы писали:
[]
A>Собственно здесь повторился мой уже существующий код на Delphi. Все бы было очень просто, если б не было сложнее. Не знаю, как на С (нет компилятора), а на Delphi при этом из 256 цветных иконок получаю страшненькие 16-цветные. В этом и заключается суть проблемы..
Вот ссылка —
здесь. Думаю, с помощью реверс-инжиниринга приведенного исходника можно сделать то, что вам нужно...
А вот еще одна, на Дельфи — то, что вам нужно, по моему...
здесь
З.Ы. И не забывайте про оверквотинг... Вернее, забудьте о нем