Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с ExtractIconEx - есть вопросы [D6, Win95/98, Win2k, WinXP]


Jel ©   (2004-05-22 14:52:00) 

Нужно получть все иконки из файла, причем как большие (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-24 11:10:00) [1]

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


Jel   (2004-05-22 22:12:00) [2]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо