Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > иконки не выкалупываются


Автор: z-END 13.1.2005, 19:40
Код

 IconIndex := 1;
 Icon := ExtractAssociatedIcon (hinstance, PAnsiChar(HLTFile),IconIndex);
  DrawIcon (HLTFileImg.Canvas.Handle, 0, 0, Icon);

Почему-то при выполнении такого кода ничего не рисуется smile
HFTFile - указывает на существующий файл (путь правильный)
причем при выпонении
Код

HLTFile :=  Application.ExeName
иконка рисуется... в чем проблемма?

Автор: Albinos_x 13.1.2005, 19:55
Чесно, говоря не знаю, но попробуй
IconIndex приравнять не 1, а к 0.

Автор: Illusion Dolphin 13.1.2005, 22:47
Если не получается так, то попробуй эдак:
Код

uses ShlObj, ActiveX...;

function SetPath(const Value: string) : PItemIDList;
var
 P: PWideChar;
 Flags,
 NumChars: LongWord;
begin
Result:=nil;
NumChars := Length(Value);
Flags := 0;
P := StringToOleStr(Value);
if not Succeeded(FIDesktopFolder.ParseDisplayName(Application.Handle,nil,P,NumChars,Result,Flags)) then
result:=nil;
end;

function GetShellImage(Path : String; Large, Open: Boolean): integer;
var
 FileInfo: TSHFileInfo;
 Flags: Integer;
 DeskTopISF: IShellFolder;
 PathPidl: PItemIDList;
begin
Result := 0;
FillChar(FileInfo, SizeOf(FileInfo), #0);
Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_ICON;
if Open then Flags := Flags or SHGFI_OPENICON;
if Large then Flags := Flags or SHGFI_LARGEICON
else Flags := Flags or SHGFI_SMALLICON;
PathPidl:=SetPath(Path);
if PathPidl<>nil then
begin
 SHGetFileInfo(PChar(PathPidl), 0, FileInfo, SizeOf(FileInfo), Flags);
 Result:=FileInfo.hIcon;
end;
end;

Автор: z-END 14.1.2005, 09:57
Вот так работает:
Код

var
 Icon: hIcon;
 IconIndex: Word;
 Pfile: PWideChar;
begin
GetMem (Pfile,1024);
StringToWideChar (HLTFile, Pfile , length (HLTFile) + 1);
Icon := ExtractAssociatedIconW (hinstance, PFile, IconIndex);
DrawIcon (HLTFileImg.Canvas.Handle, 0, 0, Icon);
FreeMem (Pfile);
end;

Почему так и непонял...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)