none
Hintergrundfarbe eines CView Elements RRS feed

  • Frage

  • Hallo Forum

    Ich verwende eine MFC-SDI Anwendung mit CView Fenster. Wie kann ich dem Fenster beibringen, dass es beim Neuzeichnen (Invalidate) nicht Weiß, sondern eine andere Farbe als Hintergrund zeigt?

    Ich möchte allerdings nicht einfach in der "OnDraw" Funktion den Hintergrund mit "FillSolidRect" auf eine andere Farbe übermalen, weil die ganze Fläche dann nämlich zweimal gezeichnet wird (einmal weiß und einmal anders) und das bei dem extrem schwachbrüstigen System, das ich als Zielsystem verwende zu schlimmem Flackern führen würde...

    Grüße

    FireHeart

    Dienstag, 17. September 2013 05:52

Antworten

  • WM_ERASEKGND überschreiben.

    Oder dort einfach nur TRUE zurückgeben und alles in OnDraw machen. Das würde auch die Verwendung einen Speicher-DCs vorbereiten.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de

    Mittwoch, 18. September 2013 09:57
    Moderator
  • Hallo Martin

    Danke für die Info. War eigentlich fast zu einfach und ich hab's mittlerweile an anderer Stelle auch gefunden.

    http://forums.codeguru.com/showthread.php?72585-Background-color-of-CView-window

    BOOL CxxxView::OnEraseBkgnd(CDC* pDC)
    {
    	RECT CR;
    	GetClientRect(&CR);
    	pDC->FillSolidRect(CR.left,CR.top,CR.right - CR.left,CR.bottom - CR.top,RGB(250,245,240));
    	return(1);
    	//return CView::OnEraseBkgnd(pDC);
    }

    Grüße

    FireHeart

    • Als Antwort markiert Fire-Heart Mittwoch, 18. September 2013 10:19
    Mittwoch, 18. September 2013 10:19

Alle Antworten

  • WM_ERASEKGND überschreiben.

    Oder dort einfach nur TRUE zurückgeben und alles in OnDraw machen. Das würde auch die Verwendung einen Speicher-DCs vorbereiten.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de

    Mittwoch, 18. September 2013 09:57
    Moderator
  • Hallo Martin

    Danke für die Info. War eigentlich fast zu einfach und ich hab's mittlerweile an anderer Stelle auch gefunden.

    http://forums.codeguru.com/showthread.php?72585-Background-color-of-CView-window

    BOOL CxxxView::OnEraseBkgnd(CDC* pDC)
    {
    	RECT CR;
    	GetClientRect(&CR);
    	pDC->FillSolidRect(CR.left,CR.top,CR.right - CR.left,CR.bottom - CR.top,RGB(250,245,240));
    	return(1);
    	//return CView::OnEraseBkgnd(pDC);
    }

    Grüße

    FireHeart

    • Als Antwort markiert Fire-Heart Mittwoch, 18. September 2013 10:19
    Mittwoch, 18. September 2013 10:19
  • Wie ich es schon geschrieben habe, würde ich eher dazu tendieren, alles in OnDraw zu machen um die Nutzung eines CMemDC zu ermöglichen.

    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de

    Mittwoch, 18. September 2013 11:51
    Moderator