Hintergrund für ListBox ...
-
Folgender Code:
Die Dialogklasse heisst CMeinDialog, von CListBox habe ich CMyListBox abge-
leitet.CMeinDialog.h ...
CMyListBox mlb;CMeinDialog.cpp ...
CMeinDialog::OnCrate( ...
mlb.Create( WS_CHILD | WS_VISIBLE | WS_BORDER, CRect(10, 10, 200, 200), this,
IDC_LIST1);Soweit geht alles, die Listbox wird angezeigt. Wenn ich bei CMyListBox das
Ereginis WM_ERASEBKGND abfange, und den Hintergrund zeichnen möchte, tut sich
nichts, die Listbox bleibt weiss. Was mache ich falsch ?
-
Zeig mal Code aus OnEraseBkgnd. Hast schon debuggt?
-
CMyListBox::OnEraseBkgnd(CDC* pDC)
pDC->SetBkColor(RGB(255, 255, 0));
....
Hier sollte man auch eine Bitmap anzeigen lassen können !
-
Das sollte dir weiterhelfen:
http://support.microsoft.com/kb/129471
-
BOOL CMDIClientWnd::OnEraseBkgnd(CDC* pDC)
{
// Set brush to desired background color
CBrush backBrush(RGB(255, 128, 128));// Save old brush
CBrush* pOldBrush = pDC->SelectObject(&backBrush);CRect rect;
pDC->GetClipBox(&rect); // Erase the area needed
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(),
PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
}Bei diesem Code wird nicht nur die Listbox gezeichnet, sondern das ganze
Dialogfeld.
-
Statt: ... CMDIClientWnd::OnEraseBkgnd ... muss es heissen:
... CMyListBox::OnEraseBkgnd ....
-
Schon klar, das war ja auch nur ein Beispiel an dem du dich orientieren kannst.
-
Offensichtlich ist ein Hintergrundbild fur die Listbox nicht so einfach, und vielleicht gar nicht vorgesehen. Bei C# wird die ListBox von Control abgeleitet und sollte auch BackgroundImage erben. Doch ist BackgroundImage für die Listbox gar nicht vorgesehen. Was meint Ihr ? Wenn es doch mit WM_ERASEBKGND, und einer eigenen Klasse geht, zeigt es mir doch ! Im Voraus vielen Dank !
-
Google spuckt z.B. das hier aus:
http://www.codeproject.com/Articles/608/Using-the-List-Control
-
Source2702 schrieb:
Google spuckt z.B. das hier aus:
http://www.codeproject.com/Articles/608/Using-the-List-ControlAchtung! Hier geht es um ein List-Control!!! Nicht um eine ListBox!
Aber eigentlich sollte es gehen.