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:
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?