![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выдираем из файла определённую иконку [D7, WinXP]
Kinder © (2003-12-16 20:21:00)
Вопрос. Как из файла выдрать иконку 16х16х256 ? Имеется ввиду что она там есть.
Игорь Шевченко (2003-12-18 15:41:00) [1]
Kinder (18.12.03 14:57)
LoadImage
Kinder (2003-12-18 14:57:00) [2]
Народ. Как вытащить иконку я знаю. Но если вы понимаете, то иконка может содержать несколько цыетов в палитре. Мне надо, чтобы была иконка 16х16х256. Как мне взять цветовую палитру???
DVM (2003-12-18 10:43:00) [3]
> SPeller © (18.12.03 10:34) [5]
Имя ресурса может быть и неизвестно.
DVM (2003-12-18 10:41:00) [4]
> И ещё, а какой ф-цией эти иконки перебирать меня интересует,
> когда есть только их хэндл?
Я же говорю - массив будет! Точнее два.
> А как она должна быть описана. В MSDN точно так же и описана.
>
В Delphi6 описана точно неправильно в ShellApi.pas. Не знаю как в 7.
А в MSDN - ПРАВИЛЬНО:
UINT ExtractIconEx( LPCTSTR lpszFile,
int nIconIndex,
HICON *phiconLarge,
HICON *phiconSmall,
UINT nIcons
);
В справке, поставляемой с Delphi не помню как.
SPeller (2003-12-18 10:34:00) [5]
Для затравки вот тебе код функции, вытаскивающей из ресурсов текущего ЕХЕ иконку нужных размеров. Правда, не знаю как вытащить нужную глубину цвета.
function LoadIconSize( ResName: PChar; X, Y: Integer ): HICON;
var
HG: HGLOBAL;
ID, HRes, RS: Cardinal;
PRes: Pointer;
begin
Result := 0;
HRes := FindResource( hInstance, ResName, RT_GROUP_ICON );
HG := LoadResource( hInstance, HRes );
PRes := LockResource( HG );
ID := LookupIconIdFromDirectoryEx( PRes, True, X, Y,
LR_DEFAULTCOLOR );
if ID < 1 then Exit;
HRes := FindResource( hInstance, MakeIntResource( ID ), RT_ICON );
RS := SizeOfResource( hInstance, HRes );
HG := LoadResource( hInstance, HRes );
PRes := LockResource( HG );
Result := CreateIconFromResourceEx( PRes, RS, True, $30000, X, Y,
LR_DEFAULTCOLOR );
end;
Kinder (2003-12-17 22:21:00) [6]
А как она должна быть описана. В MSDN точно так же и описана. И ещё, а какой ф-цией эти иконки перебирать меня интересует, когда есть только их хэндл?
DVM (2003-12-17 19:52:00) [7]
ExtractIconEx() - позволяет получить массивы маленьких и больших иконок. Потом перебирая эти иконки надо выяснять количество цветов в каждой.
P.S. Эта функция описана неправильно в Delphi. См. MSDN.
Kinder (2003-12-17 16:06:00) [8]
exe файл.
Т.е. скажем у меня есть есть через ExtractIconEx handle иконки маленькой. Но там может быть несколько форматов (XP, 256, 16, 2) мне надо выдрать именно 256 цветов, т.к. по умолчанию берётся XP, а меня это не страивает.
Erazser (2003-12-17 01:24:00) [9]
Какой файл ты имеешь в виду: exe, bmp, ico или ресурсный ????