MiBo Geschrieben 17. August 2010 Teilen Geschrieben 17. August 2010 Hi, ich habe ein kleines Problem bei der Verwendung von farbigen Icons. Ich erstelle diese dynamisch nach einer übergebenen COLORREF und verwende diese dann in einem Tree als Icon. Das ganze funktioniert auch in Windows Vista wunderbar, aber wenn ich es unter Windows XP ausführe sind alle farbigen Icons schwarz. Ich habe bereits alle möglichen Varianten der Maske und Initialisierung des Bitmaps und der ImageList versucht, aber das ERgebnis ist immer das gleiche. Wäre super, wenn ein Experte aus der MFc was dazu weiß komme ja eigentlich aus dem .NET-Bereich und tue mir eh etwas schwer mit dem Verstehen. // Initialisierung der ImageList CImageList m_ImgList; CBitmap bmp; // IDB_TREEIMG ist ein 24-bit-Bild, dass ich anzeige, wenn kein COLORREF verfügbar ist, ganz nebenbei sorgt das Bild dafür, dass die ImageList als 24-bit-Liste inisitalisiert wird bmp.LoadBitmap(IDB_TREEIMG); m_ImgList.Create(16, 16, ILC_COLOR24 | ILC_MASK, 0, 1); m_ImgList.Add(&bmp, RGB(255,255,255)); Die eigentlichen farbigen Icons erstelle ich dann folgendermaßen: COLORREF colorRef; // wird der Funktion übergeben, nur zur Vollständigkeit aufgeführt. CBitmap bitmap; bitmap.CreateCompatibleBitmap(pViewDC, 16, 16); CBitmap* pOldBitmap = memDC.SelectObject(&bitmap); CBrush oBrush(colorRef); CPen oPen (PS_SOLID,1,colorRef); CBrush* pOldBrush = memDC.SelectObject(&oBrush); CPen * pOldPen = memDC.SelectObject(&oPen); memDC.Rectangle(0,0,16,16); pViewDC->SelectObject(pOldBitmap); memDC.SelectObject(pOldBrush); memDC.SelectObject(pOldPen); ReleaseDC(pViewDC); int pos = m_ImgList.Add(&bitmap, RGB(255,255,255)); Danke für jegliche Art von Hilfe Viele Grüße MiBo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 17. August 2010 Teilen Geschrieben 17. August 2010 Moin. Was gibt den LoadBitmap unter XP zurück? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MiBo Geschrieben 17. August 2010 Autor Teilen Geschrieben 17. August 2010 Hi, LoadBitmap gibt 1 zurück. Denke aber nicht, dass das Problem hier liegt, da dieses "Default-Image" in beiden Betriebssystemen korrekt dargestellt wird. Nur die dynamisch erstellen Icons unterscheiden sich. Trotzdem danke für die Antwort Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 17. August 2010 Teilen Geschrieben 17. August 2010 pViewDC->SelectObject(pOldBitmap);Hier solltest du memDC benutzen, nicht pViewDC. Der hat doch mit dem Zeichnen gar nichts zu tun. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MiBo Geschrieben 17. August 2010 Autor Teilen Geschrieben 17. August 2010 Hi, habe das ausgetauscht, aber das Ergebnis ist immer noch das gleiche LG MiBo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 17. August 2010 Teilen Geschrieben 17. August 2010 Wo kommt denn dieser ominöse pViewDC her? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MiBo Geschrieben 18. August 2010 Autor Teilen Geschrieben 18. August 2010 Ups, tut mir leid. Den Teil hatte ich vergessen einzufügen ... CDC *pViewDC = GetDC(); CDC memDC; memDC.CreateCompatibleDC(pViewDC); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. August 2010 Teilen Geschrieben 18. August 2010 Und an welcher Stelle im Programm passiert das? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MiBo Geschrieben 18. August 2010 Autor Teilen Geschrieben 18. August 2010 Direkt innerhalb der Funktion, die mein farbiges Icon erstellt, also der erste Codeblock aus meinem Startbeitrag. LG MiBo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 18. August 2010 Teilen Geschrieben 18. August 2010 Moin. Wieder eine kurze Nachfrage: Beide Codeblöcke stammen aus der selben Funktion? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MiBo Geschrieben 18. August 2010 Autor Teilen Geschrieben 18. August 2010 Nein, der erste Code-Block wird nur am Anfang zur Initialisierung der ImageList ausfgerufen. Wenn ich das Standard-Image mit 24-Bit nicht in die ImageList lade, hat sie aus irgendwelchen Gründen 8Bit, egal was ich einstelle. Der zweite Code-Block ist dann eine Funktion, die mir ein neues farbiges Icon erstellt und der ImageList hinzufügt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.