Zwischen Views wechseln

Hallo ich arbeite an einem SDI Projekt mit VisualStudio 6. Ich möchte dabei zwischen verschiedenen Views wechseln:

CMyMultiviewView und CNextView, wobei CMyMultiviewView das Standartview ist. CNextView ist eine eigene Klasse, abgeleitet von

CView.

Zum wechseln habe ich folgende Funktion geschrieben:

C++:
void CMainFrame::SwitchView(void)
{
	CView *pOldView;
	CView *pNewView;
	//pOldView->MessageBox("In Switch View");

	//Zeiger Auf aktives View holen
	pOldView=GetActiveView();
	//Zeiger auf das aktive View retten
	m_pCFirstView=pOldView;

	//Zweites View erstellen
	CRuntimeClass *pCR=RUNTIME_CLASS(CNextView);
	m_pCSecondView = static_cast<CView*>(pCR->CreateObject());
	//ID des Views ungleich AFX_IDW_PANE_FIRST setzen
	m_pCSecondView->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW
                             ,rectDefault,this,AFX_IDW_PANE_FIRST+1,NULL);
	
	pNewView = m_pCFirstView;
	
	//IDs austauschen
	int nChildID=pNewView->GetDlgCtrlID();
	pNewView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
	pOldView->SetDlgCtrlID(nChildID);
	
	//Zeiger auf das Dokument holen
	CDocument *pDoc= pOldView->GetDocument();
	
	//View mit Dokument verbinden
	pDoc->AddView(pNewView);
	pDoc->RemoveView(pOldView);
	
	//Aktives View dem Rahmenfenster mitteilen
	SetActiveView(pNewView);
	//Und Viewgröße neu berechnen
	
	RecalcLayout();
	//View anzeigen bzw. verbergen
	pNewView->ShowWindow(SW_SHOW);
	pOldView->ShowWindow(SW_HIDE);
	
}

Allerding bekomme ich immer einen Laufzeitfehler. Der Fehler tritt beim Verbinden der Views mit dem Dokument auf. :(

Was mache ich falsch ? :confused: Bitte um Hilfe!

gruß DR
 
Hat sich erledigt, es war mein Fehler: In zeile 19 muss es heißen:
C++:
pNewView=m_pCSecondView
. ... :-(

Nun hat sich aber ein neuer Fehler aufgetan:
Ich habe eine Klasse (CMyFormView, die von CFormView erbt) dem Projekt hinzugefügt. Wenn ich jetzt versuche
C++:
m_pCFormView->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,rectDefault,this,AFX_IDW_PANE_FIRST+1,NULL);
auszuführen erscheint folgender Compilerfehler:
error C2248: 'CFormView::Create': Kein Zugriff auf protected Element, dessen Deklaration in der Klasse "CFormView" erfolgte.
Ich habe schon alle Funktionen in meiner Klasse auf public gesetzt, der Fehler erscheint weiterhin. Und wenn ich die Funktion in der Klasse CFormView in afxext.h auf public setzte bekomme ich Linkerfehler (7stück...). Was kann ich tun :confused:
gruß DR
 
Zuletzt bearbeitet von einem Moderator:
Zurück