Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#3

AW: IconHandle von Icon Datei

  Alt 25. Apr 2019, 21:36
Du extrahierst zwei Icons pro Aufruf von ExtractIconEx, also musst du auch beide zerstören. Oder du castest so, dass nur ein Icon extrahiert wird:ExtractIconEx(PChar(AFileName), AIndex, Result, HICON(nil^), 1); Auch der Aufruf von ExtractIconEx(PChar(AFileName), -1, ...) könnte Icons extrahieren; die Doku zu MSDN-Library durchsuchenExtractIconEx ist da leider nicht präzise genug. Geht's dabei nur um Ermittlung der Anzahl der vorhandenen Icons, setze beide HIcon-Parameter auf NULL (siehe oben).

Grüße
Dalai
Ich kann jetzt nicht erkennen wo ich 2 Icons pro Aufruf extrahiere..
Du meinst das LDummy + Result?

ja ich sehe es gerade
Danke.. kann mir dann das LDummy sparen..

Delphi-Quellcode:
function TSkinPopUpMenu.GetHIconFromFile(AFileName: PWideChar; ASmall: Boolean; AIndex: Integer)
  : HIcon;
var
  LInfo: TSHFileInfo;
begin
  Result := 0;

  If ExtractIconEx(AFileName, -1, Result, HICON(nil^), 0) <> 0 then // << denke das sollte so ausreichen
  begin
    If ASmall then
      ExtractIconEx(AFileName, AIndex, HICON(nil^), Result, 1)
    else
      ExtractIconEx(AFileName, AIndex, Result, HICON(nil^), 1);
  end
  else
  begin
    SHGetFileInfo(PWideChar(ExtractFileExt(AFileName)), FILE_ATTRIBUTE_NORMAL, LInfo,
      SizeOf(LInfo), IfThen(ASmall, SHGFI_SMALLICON, SHGFI_LARGEICON)
      or SHGFI_ICON or SHGFI_LINKOVERLAY or SHGFI_USEFILEATTRIBUTES);
    Result := LInfo.HIcon;
  end;
end;

Habe das PopupMenu jetzt 100 mal geöffnet und geschlossen scheint zu funktionieren..
Na ja wer macht das schon bei normaler Bedienung.

gruss

Geändert von EWeiss (25. Apr 2019 um 21:57 Uhr)
  Mit Zitat antworten Zitat