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

Вниз

Работа с ExtractIconEx - есть вопросы   Найти похожие ветки 

 
Jel ©   (2004-05-22 14:52) [0]

Нужно получть все иконки из файла, причем как большие (32х32) так и маленькие (16х16). Пишу


type ThIconArray = array[0..0] of hIcon;
    PhIconArray = ^ThIconArray;

function ExtractIconEx(lpszFile: PAnsiChar;
 nIconIndex: Integer;
 phiconLarge : PhIconArray;
 phiconSmall: PhIconArray;
 nIcons: UINT): UINT; stdcall;
 external "shell32.dll" name "ExtractIconExA";

procedure TForm1.aScanFileExecute(Sender: TObject);
var i : integer;
   NumIcons: integer;
   pTheLargeIcons: phIconArray;
   pTheSmallIcons: phIconArray;

begin
 if OpenDialog1.Execute then begin
   NumIcons := ExtractIconEx(pchar(OpenDialog1.FileName), -1, nil, nil, 0);
   GetMem(pTheLargeIcons, NumIcons * sizeof(hIcon));
   GetMem(pTheSmallIcons, NumIcons * sizeof(hIcon));
   FillChar(pTheLargeIcons^, NumIcons * sizeof(hIcon), #0);
   FillChar(pTheSmallIcons^, NumIcons * sizeof(hIcon), #0);
   ExtractIconEx(pchar(OpenDialog1.FileName), 0, pTheLargeIcons, pTheSmallIcons, NumIcons);
   for i := 0 to NumIcons - 1 do begin
     SetLength(IconArray, Length(IconArray) + 1);
     IconArray[Length(IconArray)-1] := TIcon.Create;
     IconArray[Length(IconArray)-1].Handle := pTheLargeIcons^[i];
     SetLength(IconArray, Length(IconArray) + 1);
     IconArray[Length(IconArray)-1] := TIcon.Create;
     IconArray[Length(IconArray)-1].Handle := pTheSmallIcons^[i];
     ShowMessage(IntToStr(IconArray[Length(IconArray)-1].Width));
   end;
   FreeMem(pTheLargeIcons, NumIcons * sizeof(hIcon));
   FreeMem(pTheSmallIcons, NumIcons * sizeof(hIcon));
 end;
end;


в итоге получаю и большие и маленькие иконки но - изображение маленькой иконки (16х16) рисуется в левом верхнем углу квадрата 32 на 32. То есть на выходе и большие и маленькие иконки имеют одинаковый размер. Почему так? И как получить маленькие иконки правильного размера?


 
Jel ©   (2004-05-22 22:12) [1]

up, однако. Вопрос остается открытым.


 
Jel ©   (2004-05-24 11:10) [2]

up. Неужели никто не пользовался?



Страницы: 1 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.04 c
14-1087016393
gek
2004-06-12 08:59
2004.07.04
Вот прочитал в "Комсомолке..."


9-1078659133
MrAngel
2004-03-07 14:32
2004.07.04
HLSL и GLSL


1-1087901342
Artem
2004-06-22 14:49
2004.07.04
Как узнать имя динамически создоваемого меню


1-1087449440
Rediska
2004-06-17 09:17
2004.07.04
Процедура поиска. Помогите.


1-1087903052
denary
2004-06-22 15:17
2004.07.04
как записать в массив действительных чисел строки из текстового ф