autoredraw



  • hallo

    wie geht autoredraw in MFC?
    irgendjemand ne ahnung?


  • Administrator

    Was verstehst du bitte unter autoredraw?

    Gr├╝ssli



  • Invalidate?

    Von welcher Sprache kommst du? ­čśĽ



  • das wenn ich z.B. ├╝ber dem diagram einen dialog ├Âffne und den dialog schliesse, das diagram nachher nicht weg ist



  • invalidate? und wie funktioniert das wenn ich fragen darf?
    invalidate() bringt irgendwie nichts...



  • Wenn du an der richtigen Stelle zeichnen w├╝rdest, ginge das ganz von allein.



  • also
    der code sieht ca. so aus...

    CDC *pDC = m_ctrlDiagram.GetDC();
    
    ... diagram wird gezeichnet... juhee
    

    niemand ders mir sagen will?


  • Administrator

    muchach0 schrieb:

    also
    der code sieht ca. so aus...

    CDC *pDC = m_ctrlDiagram.GetDC();
    
    ... diagram wird gezeichnet... juhee
    

    niemand ders mir sagen will?

    Wir wissen ja nichts von deinem Code. Ist es ein SDI? MDI? Dialog? Und was f├╝r eine View brauchst du? Was ist m_ctrlDiagram? In welcher Funktion sind wir, wo du diesen Codeausschnitt zeigst? Usw. usf.

    Wie es MFK gesagt hat, wenn du an der richtigen Stelle das Zeugs malst, passiert es automatisch!

    Gr├╝ssli



  • also

    meine zechnungsfunktion sieht z.B. so aus... in einer SDI ganz billig

    void CDrawingTestDlg::OnTestDraw() 
    {
    	CDC *pDC = m_ctrlPic.GetDC();
    	CRect rFrame;
    
    	CBrush myBrush(RGB(255, 128, 0));
    	m_ctrlPic.GetClientRect(rFrame);
    
    	pDC->SelectObject(&myBrush);
    	pDC->Rectangle(rFrame);
    
    	ReleaseDC(pDC);
    }
    

    m_ctrlPic ist ein Frame der rest sollte klar sein. Das beispiel hier zeichnet nur ein oranges rechteck in der gr├Âsse des Frames.

    das funktioniert auch alles so weit so gut, NUR wenn ich den dialog verschiebe (ausm bild) oder etwas dar├╝ber schiebe dann verschwindet mein h├╝bsches orange wieder... wie weiter?



  • Du musst deinen Zeichencode in die OnPaint() deines TestDialoges packen. Der Aufruf derselben l├Ąuft dann ├╝ber Invalidate() bzw. automatisch.


Log in to reply