Форум: "WinAPI";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
ВнизРабота с 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c