[VC++ 6.0] CSplitWnd und GDI



  • Hallo Leute!

    Ich habe ein zweigeteiltes SDI-Fenster. Der linke Teil ist vom Typ CFormView und der linke vom Typ CView. Wen nich einen Button auf der CFormView anklicke soll auf der CView was gezeichnet werden. Ich hab folgendes mal probiert:

    void myFormView::OnButton1()
    {
        CWnd * wnd = ... //Zeiger auf myCView     
        CClientDC clientDC(wnd);
        clientDC.TextOut(300, 300, "Hello World!");
    }
    

    Wie bekomme ich den Zeiger auf myCView??? Wenn ich AfxGetMainWindow() oder GetParent verwende dann malt er auch über meine FormView drüber...

    Danke
    Sonny



  • Hi,

    dafür gibt es mehrere Wege, pinzipell ist aber zu beachten das zwei Views auch
    zwei Views sind. Bedeutet jedes View hat seine eigene Messagequeue usw.
    Deshalb würde ich immer empfehlen Daten an ein View zusenden. Aber wie auch immer.

    die funktion GetDocument()->GetFirstViewPosition(); gibt dir den Anfang des View-Containers und mit
    CView* pView = GetDocument()->GetNextView(pos);

    und pView->GetRuntimeClass()->m_lpszClassName kannst du den Klassennamen
    vergleichen.

    Man kann aber auch, beim anlegen des Views im MainFrame den Zeiger auf ein View hinterlegen.

    Es gibt auch UpdateAllViews, oder SendMessage(WM_USER_xxx,....)
    setzt allerdings vorraus das das View dann selber zeichenen muß


Anmelden zum Antworten