Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.25;
Скачать: CL | DM;

Вниз

Выдираем из файла определённую иконку   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2004.02.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-79842
Сережа
2004-02-09 18:32
2004.02.25
работа с рисунками


14-80272
BJValentine
2004-02-04 11:55
2004.02.25
Почта


14-80239
PaRL
2004-02-03 09:58
2004.02.25
Acrobat Reader


1-79928
Khabibulin
2004-02-13 21:42
2004.02.25
MP3


1-79983
frost
2004-02-13 06:48
2004.02.25
32 bit иконки.