Zugriff auf einzelne, gleich große Images eines Multi-Image-Icons



  • Hallo,
    wie man unter VS und C++ mit LoadImage() oder LoadIcon() auf einzelne Images eines Multi-Image-Icons zugreift, ist mir bekannt, funktioniert alles prima. Dabei wird als "Auswahlkriterium" ja die gewünschte Größe angegeben (cxDesired, cyDesired).
    Wenn man allerdings die HICON-Handles für alle Images nacheinander erhalten möchte, um einfach mal alle Icons darzustellen, funktioniert das natürlich nicht, vor allem, wenn in dem Icon mehrere Images mit gleicher Größe enthalten sind (was möglich ist und was z.B. mit IrfanView auch angezeigt werden kann).
    Wenn z.B. drei Images mit 32x32 enthalten sind und man gibt cxDesired = cyDesired = 32 bei LoadImage() an, kriegt man immer nur das Handle des ersten Images, nie die von den beiden nachfolgenden Images.
    Im Internet habe ich dazu nichts gefunden ... Wie kann man gezielt nacheinander auf alle Images zugreifen bzw. die HICON-Handle ermitteln? (Sprache: C++)
    Danke für Hinweise!
    Gruß Frank



  • Icons

    Viel Spaß.



  • Ja, die Seite hatte ich auch schon gefunden, und wusste damit, dass ich theoretisch darüber mir alles selbst ermitteln kann ... aber eben zu Fuß und alles alleine.

    Kann ich deine Antwort dahingehend interpretieren, dass es für meine Ansinnen keine Unterstüzung von API-Funktionen gibt und das die einzige Möglichkeit ist?



  • Was fertiges in der WinAPI wüsst ich nicht. Eine kurze Googlesuche führt mich zum Bleistift zu Manual decoding of ICO file format – small c++ cross-platform decoder lib.



  • Der Quelltext im Link aus Post 2 ist von 1997. Er funktioniert aber einwandfrei. Lediglich Icons mit einer Größe von 256x256 werden nicht verarbeitet, da sie in den meisten Fällen PNG-komprimiert vorliegen.

    Als ich auf der Suche nach entsprechenden Funktionen war bin ich auch bei diesem Quelltext hängen geblieben und hab ihn für meine Zwecke benutzt.

    Ich kann dieses MSDN Beispiel nur empfehlen.



  • Danke für euere Hilfe, ich sehe mir das mal an.


Anmelden zum Antworten