Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi SHGetFileInfo (https://www.delphipraxis.net/28878-shgetfileinfo.html)

Billi Berserker 31. Aug 2004 17:38


SHGetFileInfo
 
Ich hab da ein kleines Problem mit der SHGetFileInfo function.

Ich erstelle mir eine himagelist der shell icons.
A:
Delphi-Quellcode:
    fImageList := SHGetFileInfo(nil,0, FileInfo, SizeOf(FileInfo),
                        SHGFI_SYSICONINDEX or SHGFI_SMALLICON);

Für jedes icon was ich brauche hohle ich mir den Index des icons in der image liste
B:
Delphi-Quellcode:
        SHGetFileInfo(PChar(fItemIcon),0, FileInfo, SizeOf(FileInfo),
            SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
        fIconIndex := FileInfo.iIcon;

Gezeichnett wird das Icon dann auch über einen API Befehl :
C:
Delphi-Quellcode:
ImageList_Draw(fImageList, Self.fIconIndex, Canvas.Handle, Rect.Left+6, imageTop,ILD_TRANSPARENT);
Problem ist das sobald Code B aufgerufen wird irgendwie Speicher für jedes Icon belegt wird.
Bei mehreren Icons kommen da schon mal 4 MB zusammen obwohl ich ja eigentlich nur den Index für die Imageliste ziehe und nicht das komplette icon. Muß ich noch irgendetwas freigeben? (destroyicon(FileInfo.hicon) bringt nichts da hicon = nil)
Oder wird mit dem Aufruf von Code B: das Icon in die image liste geladen(obwohl die imageliste ja nicht mit angegeben ist) so das Code C überhaupt funktioniert?


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz