Форум: "WinAPI";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
ВнизВыдираем из файла определённую иконку Найти похожие ветки
← →
Kinder (2003-12-16 20:21) [0]Вопрос. Как из файла выдрать иконку 16х16х256 ? Имеется ввиду что она там есть.
← →
Erazser (2003-12-17 01:24) [1]Какой файл ты имеешь в виду: exe, bmp, ico или ресурсный ????
← →
Kinder (2003-12-17 16:06) [2]exe файл.
Т.е. скажем у меня есть есть через ExtractIconEx handle иконки маленькой. Но там может быть несколько форматов (XP, 256, 16, 2) мне надо выдрать именно 256 цветов, т.к. по умолчанию берётся XP, а меня это не страивает.
← →
DVM (2003-12-17 19:52) [3]ExtractIconEx() - позволяет получить массивы маленьких и больших иконок. Потом перебирая эти иконки надо выяснять количество цветов в каждой.
P.S. Эта функция описана неправильно в Delphi. См. MSDN.
← →
Kinder (2003-12-17 22:21) [4]А как она должна быть описана. В MSDN точно так же и описана. И ещё, а какой ф-цией эти иконки перебирать меня интересует, когда есть только их хэндл?
← →
SPeller (2003-12-18 10:34) [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;
← →
DVM (2003-12-18 10:41) [6]
> И ещё, а какой ф-цией эти иконки перебирать меня интересует,
> когда есть только их хэндл?
Я же говорю - массив будет! Точнее два.
> А как она должна быть описана. В MSDN точно так же и описана.
>
В Delphi6 описана точно неправильно в ShellApi.pas. Не знаю как в 7.
А в MSDN - ПРАВИЛЬНО:
UINT ExtractIconEx( LPCTSTR lpszFile,
int nIconIndex,
HICON *phiconLarge,
HICON *phiconSmall,
UINT nIcons
);
В справке, поставляемой с Delphi не помню как.
← →
DVM (2003-12-18 10:43) [7]
> SPeller © (18.12.03 10:34) [5]
Имя ресурса может быть и неизвестно.
← →
Kinder (2003-12-18 14:57) [8]Народ. Как вытащить иконку я знаю. Но если вы понимаете, то иконка может содержать несколько цыетов в палитре. Мне надо, чтобы была иконка 16х16х256. Как мне взять цветовую палитру???
← →
Игорь Шевченко (2003-12-18 15:41) [9]Kinder (18.12.03 14:57)
LoadImage
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.132 c