Fragen zu SHGetFileInfo
-
Ich möchte die Systemicons zur Darstellung der verschiedenen Laufwerkstypen verwenden. Dabei bin ich auf SHGetFileInfo gestoßen. Ich möchte das Icon ermitteln und einer TCustomImageList (BCB) hinzufügen, damit es in einer TTreeView verwendet werden kann.
Wenn ich diese mit den Flags SHGFI_ICON und SHGFI_SMALLICON rufe, erhalte ich laut Hilfe in der SHFILEINFO Struktur einen Handle auf das Icon sowie den Index in der System Index List zurück. Die Funktion selber liefert mir einen Handle auf die System Index List selber zurück.
Jetzt meine Fragen:
1. muß ich den Icon-Handle freigeben oder ist das nicht notwendig? Wenn ja: mit welcher Funktion muß ich den Handle freigeben?
2. Wie komme ich an das Icon selber heran? Mit GetObject? Dort steht aber nichts explizit von Icons...
3. Wie erhalte ich Zugriff auf die System Index List? In der Hilfe hab ich zwar zu IndexList etwas gefunden, aber nichts speziell von der Systemliste.
Wäre nett, wenn Ihr mir weiterhelfen könnt!
-
Dank des Eintrags von flenders bin ich auf die MSDN-Library gestoßen, die weit mehr Infos über WinAPI enthält als mein BCB Hilfe-System!
Damit hat sich Frage 1 schon beantwortet. DestroyIcon ist's und der Handle muß freigegeben werden.
Aber bei Frage 2 stoße ich nur auf ImageList_GetIcon. Aber wie bekomme ich die Bitmap des Icon?
-
Es geht zwar sicher (denk ich mal) noch einfacher, aber du kannst einfach ein Bitmap in einen Memory-DC selektieren und dann mit DrawIconEx das Icon hineinzeichen. Jetzt hast du ein Bitmap von deinem Icon
Geht aber wie gesagt bestimmt auch einfacher / effizienter, aber da müssen die Profis ran