CFormView - keine Reaktion
-
Hallo,
ich wechsel - wie hier in SwitchToView beschrieben - zur 2. Ansicht. Das klappt auch.
Jetzt habe ich in der 2. Ansicht ein OK-Button und in der Klasse für FormView2 eine Behandlungsroutine OnOK(). Wenn ich OK klicke passiert aber nichts.
(Habe gleich zu Beginn eine MessageBox zum Testen, dort scheint er aber gar nicht erst hinzukommen)Was mache ich falsch?
Danke
Chris
-
Kann mir niemand helfen?

-
Ich hab Sourcecode für Formviews switchen zu hause...
Devil
-
Also das switchen klappt ja im Prinzip - zumindest wird die Anzeige gewechselt.
Aber es erfolgt keine Reaktion auf den ButtonClick, obwohl ich eine Routine OnOK in der 2. FormView implementiert habe. Das Programm scheint beim Klick diese Routine aber nicht zu bearbeiten.Weißt Du eventuell woran das liegen kann?
Gruß
Chris
-
BOOL CClassBuilderDoc::SwitchToView(CRuntimeClass *pNewViewClass) { CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd(); CView* pOldActiveView = pMainWnd->GetActiveView(); // If we're already displaying this kind of view, no need to go further. if (pOldActiveView->IsKindOf(pNewViewClass)) return TRUE; CSplitterWnd* pSplitter = (CSplitterWnd *)pOldActiveView->GetParent(); pOldActiveView = (CView*)pSplitter->GetPane(0,1);//damit er nicht den Falschen View Löscht int row= 0, col= 1; ASSERT(pSplitter->IsChildPane(pOldActiveView, row, col)); CRect viewrect; pOldActiveView->GetWindowRect(&viewrect); // set flag so that document will not be deleted when view is destroyed m_bAutoDelete = FALSE; // Delete existing view pOldActiveView->DestroyWindow(); // set flag back to default m_bAutoDelete = TRUE; // row = 0; // col = 1; // Create new view CCreateContext context; context.m_pNewViewClass = pNewViewClass; context.m_pCurrentDoc = this; context.m_pNewDocTemplate = this->GetDocTemplate(); context.m_pLastView = pOldActiveView; context.m_pCurrentFrame =NULL;// pMainWnd->GetActiveFrame(); if (!pSplitter->CreateView(row, col, pNewViewClass, viewrect.Size(), &context)) return FALSE; // Set active CMainView* pNewView = (CMainView *)pSplitter->GetPane(row, col); pSplitter->GetParentFrame()->SetActiveView(pNewView); pSplitter->RecalcLayout(); pNewView->SendMessage(WM_PAINT); return TRUE; }^mit dem Code hatte ich nie Probleme, wärend ich bei anderen Funktionen immer wieder
probleme mit FormViews hatte. Ich weis allerdings nicht in wie weit er sich
von deinem Code unterscheidet.Devil
-
Erstmal Danke!
Habe eine ähnliche Variante hier aus der Faq gehabt, die per int-Parameter switcht.
Kannst Du mir jetzt bitte noch sagen, wie ich die solch ein Switch durchführe, also den Aufruf von SwitchToView?
Ich weiß nicht so recht was ich mit dem CRuntimeClass-Pointer als Parameter anfangen soll.
-
CMeinView::GetRuntimeClass();
Damit bekommst du die Runtime-Klasse der Viewklassen.
Devil
-
Danke
