Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.048 c
1-1087746305
g-l-u-k
2004-06-20 19:45
2004.07.04
Загрузка позиции TrackBar из файла


3-1086345696
apollo
2004-06-04 14:41
2004.07.04
Скопировать массив из MSAccess в вариантный массив


3-1086780618
KADAN
2004-06-09 15:30
2004.07.04
Аналог LIMIT (MySQL) в MSSQL


14-1087270390
OFF
2004-06-15 07:33
2004.07.04
Sony DSC-V1 users guide.


3-1086701394
serg128
2004-06-08 17:29
2004.07.04
Не работает Lookup поле, посмотрите плиз, почему?




   Наверх