Hi Leute,
ich möchte die System Image List in meine eigene ImageList kopieren, damit ich die passenden Icons zu gelisteten Dateien in meinem Listview anzeigen kann. Hierzu habe ich zwei eigene Imagelisten angelegt. Eine für die Icons 32x32 und eine für die Icons 16x16. Zum Kopieren wollte ich die Shell-Funktion Shell_GetImageLists aus Shell32.dll verwenden.
Die Definition aus der Hilfe lautet:
Zitat:
BOOL Shell_GetImageLists(
HIMAGELIST *phiml,
HIMAGELIST *phimlSmall
);
Parameters
phiml
[in] Pointer to the
handle of an image list which, on success, receives the system image list for large (32 x 32) icons.
phimlSmall
[in] Pointer to the
handle of an image list which, on success, receives the system image list for small (16 x 16) icons.
Leider klappt das nicht. Ich bekomme folgende Fehlermeldung:
Zitat:
E2036 Variable erforderlich
Eingebunden und benutzt habe ich die Funktion folgendermaßen:
Delphi-Quellcode:
....
function Shell_GetImageLists(LargeList : PCardinal; SmallList : PCardinal) : Boolean; stdcall;
implementation
function Shell_GetImageLists; external shell32 name 'Shell_GetImageLists';
....
procedure TOTFListView.CreateWnd;
begin
inherited;
FFileImageList16 := TImageList.Create(self);
FFileImageList16.Height := 16;
FFileImageList16.Width := 16;
self.SmallImages := FFileImageList16;
FFileImageList32 := TImageList.Create(self);
FFileImageList32.Height := 32;
FFileImageList32.Width := 32;
self.LargeImages := FFileImageList32;
Shell_GetImageLists(@FFileImageList32.Handle, @FFileImageList16.Handle); // Fehler
end;
Ich denke, die Fehlermeldung kommt, weil
Handle eine Nur-Lese-Eigenschaft ist.
Gleichzeitig gehe ich aber davon aus, dass das
Handle gar nicht verändert werden soll, sondern nur die Zielliste ist, in die die Icons kopiert werden sollen.
Jetzt gibt es zwei Möglichkeiten, jemand weist mir den Richtigen Weg für die Benutzung dieser Funktion oder es gibt einen anderen Weg den ich nicht sehe.
Schon mal Dank für die Hilfe,
Gruß oki