Главная страница
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.05 c
3-1086615740
Inkotex
2004-06-07 17:42
2004.07.04
DBGrid и его набор даных


1-1087889155
Chery
2004-06-22 11:25
2004.07.04
Как узнать окончание файла?


4-1085119430
SMT
2004-05-21 10:03
2004.07.04
Очистка буфера клавиатуры


14-1087029036
Godlike
2004-06-12 12:30
2004.07.04
Film


3-1086347728
Shade
2004-06-04 15:15
2004.07.04
Содержимое Blob поля надо поместить в MS Word (TwordApplication)