[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ß