Hintergrundfarbe von CView ändern...
-
Hiho.
Weiss jemand, wie man die Hintergrundfarbe von CView ändern kann? Ich möchte lieber blau statt weiss haben. Kann man das irgendwie machen??
thx & cu
-
Hi,
das ist ganz einfach. Du muss fur das Fenster eine neue Funkcion "OnEraseBkgnd" herstellen und mit den folgeden Zeile anfüllen:
// Set brush to desired background color
CBrush backBrush(RGB(192, 192, 192));// Save the old brush
CBrush* pOldBrush = pDC->SelectObject(&backBrush);// Get the current clipping boundary
CRect rect;
pDC->GetClipBox(&rect);// Erase the area needed
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(),
PATCOPY);pDC->SelectObject(pOldBrush); // Select the old brush back
return TRUE; // message handledDie originale Zeilen kannst du abwischen. Sorry, aber meine deutche Sprache ist nicht sehr gut.
Fredy
MSDN:
HOWTO: How to Make the CMiniFrameWnd Window Paint Its Background Area
ID: Q135884
method 2
-
hi.
erstmal dank für deine hilfe!!!
ich ahbe jetzt in CView diese Funktion eingbaut:
bool CVIDCAPView::OnEraseBkgnd(CDC* pDC)
{
CWnd::OnEraseBkgnd(pDC);
CBrush backBrush(RGB(0, 0, 0));
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
CRect rect;
pDC->GetClipBox(&rect);
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
}Ich rufe noch die CWnd-Funktion auf. Ist das ok oder überhaupt noch nötig? Naja bei dem Quelltext oben habe ich leider immer noch ein weisses Fenster
Was hab ich falsch gemacht??thx & cu
-bunti
-
Überprüfe mal, welchen Wert
pDC->GetClipBox(&rect);
zurückgibt.
Vielleicht will das nicht?!? Ist nur so eine Idee.
Unter http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cdc.3a3a.getclipbox.asp findest du, welche Werte zurückgegeben werden können.