Beim Ändern der Größe eines Splitter-Fensters wird Grafik "drübergezeichnet"



  • Ich lege mir in meinem MainFrame (überschriebene Methode OnCreateClient) ein SplitterWnd an:

    BOOL bRet = m_wndSplitter.CreateStatic(this, 1,2);
    
    if(! m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(MyTree),CSize(200,100),pContext) )
        return FALSE;
    
    if(! m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CMyView), CSize(0,0), pContext) )
        return FALSE;
    
    return bRet;
    

    Das Problem ist nun, dass ich in der CMyView::OnDraw eine Zeichnung erzeuge, die beim Ändern der Größe des Splitter-Fensters einfach drübergezeichnet wird, anstatt, dass erst der Inhalt des Viewports gelöscht wird. D.h., dass die vorher kleine Grafik noch zum Teil sichtbar ist, nachdem die Größe geändert wurde. Die größere Grafik wird dann zum Teil über die kleinere gezeichnet... Das sieht natürlich unschön aus.

    Ich dachte, dass ich es vielleicht dadurch lösen könnte, dass ich in CMyView:OnSize einfach die Zeichenmethode OnDraw nochmal aufrufe. Allerdings gibt das nur eine Assertion.

    Der Code, den ich ausprobierte, lautet:

    // Methode der Basisklasse aufrufen
    // Hatte ich auch schon ohne versucht und ans Ende der Funktion gestellt
    // liefert aber in jedem Fall eine Assertion...
    CFormView::OnSize(nType, cx, cy);
    
    CClientDC dc(this);
    OnPrepareDC(&dc);
    OnDraw(&dc);
    

    Wie kann ich es schaffen, dass der Inhalt des CMyView-Splitter-Panes gelöscht wird und dann erst gezeichnet wird?

    Vielen Dank schonmal und Gruß

    Prog!


Anmelden zum Antworten