Rahmen zeichnen - Kleiner Schönheitsfehler



  • Hallo!

    Ich habe mir eine Static-Klasse (CStaticEx) erstellt, die von CStatic abgeleitet ist.
    Im OnPaint Ereignis der Klasse zeichne ich "bei Bedarf" ein Rahmen um das Steuerelement.

    Jetzt gibt es da allerdings einen kl. Schönheitsfehler. Und zwar muss das CStaticEx Control im OnSize Ereignis des Dialogs immer auf eine bestimmte Größe angepasst werden (Breite des Dialogs). Wenn ich nun den Dialog vergrößere (ziehen mit der Maus am rechtem Rand) wird munter der Rahmen mitgezeichnet (auch über den eigentlichen Hintergrund des CStaticEx) und das sieht ziemlich schrecklich aus.

    Weiß jemand wie ich das Problem lösen kann?
    Hie der Source mit dem der Rahmen gezeichnet wird:

    // Behandlungsroutinen für Nachrichten CStaticEx 
    void CStaticEx::OnPaint() 
    {
    	CPaintDC dc(this); // device context for painting
    
    	CRect rect;
    	this->GetClientRect(&rect);
    
    	// Rahmen zeichnen
    	if (m_crFrameColor != -1)
    	{
    		CBrush cBrush(m_crFrameColor);
    		dc.FrameRect(&rect, &cBrush);
    	}
    
            // Code...
    }
    


  • Double Buffering.

    Das heißt Hintergrund und der Rahmen wird gleichzeitig gezeichnet.



  • double buffer schrieb:

    Double Buffering.

    Das heißt Hintergrund und der Rahmen wird gleichzeitig gezeichnet.

    Hmm, das heißt ICH zeichne jetzt beides gleichzeitig oder ich soll Double Buffering verwenden!?

    Was heißt das konkret für einen Lösungsansatz?



  • Informier dich doch einfach über google was Double Buffering ist und wie man es in der MFC hinbekommt.



  • double buffer schrieb:

    Informier dich doch einfach über google was Double Buffering ist und wie man es in der MFC hinbekommt.

    🙂 Werd' ich machen.


Anmelden zum Antworten