DateiIcons in eine ImageList lesen -- GeschwindigkeitsProblem --
-
Hallo...
Ich lese ein Verzeichnis aus und mit folgendem Code die Icons.
SHGetFileInfo(DateiPfad.c_str(),0,&FileInfo,sizeof(SHFILEINFO),SHGFI_ICON | SHGFI_SMALLICON); MyIcon->Handle = FileInfo.hIcon; Form1->ImageList3->AddIcon(MyIcon);Dafür benötigt mein Programm 15ms.
Ohne das Auslesen der Icons sind es nur 2ms.Hat jemand einen Tipp, wie ich die ganze Sache beschleunigen kann ???
==>Eisbeer<==
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
schnelleren rechner kaufen
-
Ich brauche keinen schnelleren Rechner, sondern einen schnelleren Weg...
==>Eisbeer<==
-
There are two ways to retrieve an object's icon. The simplest way is to call SHGetFileInfo. However, this approach is inflexible and may be slow. A more flexible and efficient way to retrieve an item's icon is to use IExtractIcon. The Shell uses IExtractIcon to retrieve icons when it displays the contents of a folder.
-
Da Du ja hier nur auf die Extensions Wert legst, kannst Du dasganze ja auch Cachen. Ein Word Icon langt ja... oder?
-
DWORD dwFileAttributes = GetFileAttributes(DateiPfad.c_str()); SHGetFileInfo(DateiPfad.c_str(), dwFileAttributes, &FileInfo, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES); MyIcon->Handle = FileInfo.hIcon; Form1->ImageList3->AddIcon(MyIcon);Geht schneller, gibt aber nur Dateisymbole entsprechend der Dateierweiterung zurück. Bei EXE-Dateien wird z.B. nur das normale EXE-Symbol angezeigt, nicht aber das in der EXE enthaltene.
-
Danke für die Unterstützung.
Das Posting von sri bringt 2ms.
Kann mir jemand die Sache mit dem Icon-Cacheing erklären ???
==>Eisbeer<==
-
Leg Dir eine std::map an nach Extension und mit dem gepeicherten Icon...
-
Leg Dir eine std::map an nach Extension und mit dem gepeicherten Icon...
Könntest du etwas genauer werden ???
==>Eisbeer<==
-
Ich war (denke ich) genau genug...
-
Und warum benutzt du nicht IExtractIcon wie Informatiklehrer es forschlug?