SDI, Splitter und wechselnde Ansichten
-
Hallo zusammen!
Da ich noch unerfahren bin habe ich mir ein Projekt gesucht.
Nch einigem hin und her bin ich soweit gekommen, eine SDI-Awendung zu erstellen mit SplitterWnd unterstützung.
So weit so gut. Die Anwendung wird erstellt die Ansicht wird gesplittet, oben CFormView im unteren Teil CListView. Jetzt habe ich eine zweite Ansicht implementiert. Nach auswahl im Menü wird eine neue Ansicht (CView) erstellt und angezeigt. Funktioniert wunderbar. Leider kommt dann beim zurückschalten zum SplitterWnd das Problem.
Es wird zwar das FormView erstellt und angezeigt, allerdings nicht gesplittert. FormView braucht jetzt das ganze Fenster, ListView fällt unter den Tisch. Ausserdem ist das Splitten des Ansicht jetzt deaktiviert.
Ich habe schon versucht splitterWnd statt in CMainFrame in der View Klasse zu initialisieren. Hat natürlich nicht funktioniert.Ich poste mal den Code zum Umschalten der Ansichten:
CView* pAlteAnsicht=GetActiveView(); CView* pNeueAnsicht; int Nr; if(m_bAnsicht) { pNeueAnsicht=(CView*) new CtmpSDIView; Nr=1; } else { pNeueAnsicht=(CView*) new CConsumGraphView; Nr=2; } m_bAnsicht=!m_bAnsicht; CCreateContext kontext; kontext.m_pCurrentDoc = pAlteAnsicht->GetDocument(); pNeueAnsicht->Create(NULL,NULL,WS_BORDER|WS_CHILD,CFrameWnd::rectDefault,this,Nr,&kontext); pNeueAnsicht->OnInitialUpdate(); SetActiveView(pNeueAnsicht); pNeueAnsicht->ShowWindow(SW_SHOW); pAlteAnsicht->ShowWindow(SW_HIDE); pAlteAnsicht->SetDlgCtrlID(pAlteAnsicht->GetRuntimeClass() == RUNTIME_CLASS(CtmpSDIView) ?1:2); pNeueAnsicht->SetDlgCtrlID(AFX_IDW_PANE_FIRST); RecalcLayout();Schönen Tag an alle
Wolfgang
-
Vielleicht hilft dir das ja weiter:
http://www.cherea.de/bitbucket/multisplitwnd/multisplitwnd.html
-
Danke >Peterchen. Momentan habe ich leider nicht die Zeit aber wenn dann werde ich das mal durchschauen.
Thx
Wolfgang.