Icons, CImageList und CToolBarCtrl
-
In meiner neuen Klasse, abgeleitet von CToolbarCtrl werden die Buttons dynamisch angehängt und mit Icons versehen.
Die Icons werden ja in der ImageList des Controls gespeichert, die ich mitilist->Create(32, 32, ILC_MASK | ILC_COLOR32, 100, 0);
auch neu erzeuge.
Die Icons haben 32Bit Farbtiefe und einen Alphakanal und werden mitAfxGetApp()->LoadIcon(...)
der imagelist übergeben. Funktioniert auch alles wunderbar. Aber leider nur unter XP.
Windows 2000 kann meinen Informationen zufolge wohl keinen Alphakanal darstellen.
Icon-Dateien haben ja die Möglichkeit mehrere Abbilder zu erfassen. So habe
ich nun auch ein 24Bit tiefes Bild hinzugefügt (logischerweise ohne Alpha).Wenn ich jetzt aber nun die ImageListe mit ILC_COLOR24 erzeuge, wird trotzdem
das 32 bit bild verwendet, aber die maske nicht richtig verwendet.Ich hatte angenommen, je nach vorgabe der imagelist, wird entsprechend das abbild aus dem Icon gezogen.
auch ein zusätzliches abbild, in einer noch geringeren farbtiefe mit ganz anderem inhalt wird nicht verwendet.
folglich benutzt er wohl immer die höchste farbtiefe und rechnet die runter.
Hab ich das so richtig verstanden?Wie bekomme ich es hin, dass er ein anderes abbild läd?
Sonst müsste ich ja im falle von version < windowsXP eine andere icondatei laden,
was meiner einschätzung nach, ja nicht im sinne des erfinders ist, oder?vielen dank für ratschläge und hinweise,
Smeagol
-
Also, mittlerweile bin ich zu folgender Erkenntnis gekommen:
Die CImageList wird mit ILC_COLOR32 created und die Icons über AfxGetApp()->LoadIcon(...) eingefügt.
Die Icons haben 2 Abbilder, ein 32Bit Color mit AlphaKanal und eins mit 256 Farben.
WinXP läd dann das hochwertige und Win2k das kleinere, automatisch.Den Sinn von ILC_COLOR32 bleibt mir jedoch verborgen.
wenn ich mit ILC_COLOR8 das erzeuge, sehen die icons zumindest unter XP schon verwurschtelt aus.
eigentlich war ich mal davon ausgegangen, dass abhängig der imagelist-einstellung das icon-abbild gewählt wird, scheint demnach ja nicht so.Zumindest ist jetzt mein Problem gelöst. sollte sich noch jemand dazu berufen fühlen, mir den Rest zu erklären, würde ich mich freuen.
bis dann
Smeagol
-
Du irrst Dich. IMHO wird bereits bei LoadIcon die entsprechende Farbtiefe und Größe gewählt. Das Problem wäre in LoadIcon zu suchen...
Verhält sich LoadImage identisch?