Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[C++/MFC] Problem mit farbigen Icons

Empfohlene Antworten

Veröffentlicht

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

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 :)

Hi,

habe das ausgetauscht, aber das Ergebnis ist immer noch das gleiche :)

LG

MiBo

Ups, tut mir leid. Den Teil hatte ich vergessen einzufügen ...


CDC *pViewDC = GetDC();

CDC memDC;

memDC.CreateCompatibleDC(pViewDC);

Direkt innerhalb der Funktion, die mein farbiges Icon erstellt, also der erste Codeblock aus meinem Startbeitrag.

LG

MiBo

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.