CFormView in der SDI
-
Hallo,
ich habe eine SDI-Anwendung erstellt und die View-Klasse von CFormView abgeleitet, so dass mir sofort ein Formular in der Anwendung angezeigt wird.
Je nach Wahl aus der Menüleiste der Anwendung, möchte ich die FormViews wechseln oder überlagern.
Hier waren einige Beträge dazu, die arbeiteten aber alle mit einem Splitter-Window, was ich nicht habe.
Wer kann mir helfen? (vielleicht mit etwas Quellcode)
Chris
-
MSDN:
"Hinzufügen von mehreren Ansichten zu einem einzelnen Dokument"
-"Implementieren der Funktion zum Wechseln"CView* CMyWinApp::SwitchView( ) { CView* pActiveView = ((CFrameWnd*) m_pMainWnd)->GetActiveView(); CView* pNewView= NULL; if(pActiveView == m_pOldView) pNewView= m_pNewView; else pNewView= m_pOldView; // Exchange view window IDs so RecalcLayout() works. #ifndef _WIN32 UINT temp = ::GetWindowWord(pActiveView->m_hWnd, GWW_ID); ::SetWindowWord(pActiveView->m_hWnd, GWW_ID, ::GetWindowWord(pNewView->m_hWnd, GWW_ID)); ::SetWindowWord(pNewView->m_hWnd, GWW_ID, temp); #else UINT temp = ::GetWindowLong(pActiveView->m_hWnd, GWL_ID); ::SetWindowLong(pActiveView->m_hWnd, GWL_ID, ::GetWindowLong(pNewView->m_hWnd, GWL_ID)); ::SetWindowLong(pNewView->m_hWnd, GWL_ID, temp); #endif pActiveView->ShowWindow(SW_HIDE); pNewView->ShowWindow(SW_SHOW); ((CFrameWnd*) m_pMainWnd)->SetActiveView(pNewView); ((CFrameWnd*) m_pMainWnd)->RecalcLayout(); pNewView->Invalidate(); return pActiveView; }