void CGeorgesEditDoc::OnEditUndo() { if (!_UndoBuffer.empty ()) { // Get an action IAction *action = _UndoBuffer.back (); _UndoBuffer.pop_back (); // Undo it bool modified; action->doAction (*this, false, modified, false); // Put in the redo list _RedoBuffer.push_back (action); CMDIFrameWnd* pMainWnd = (CMDIFrameWnd*)AfxGetMainWnd(); // Get the active MDI child window. CMDIChildWnd* pChild = (CMDIChildWnd*)pMainWnd->MDIGetActive(); pChild->RecalcLayout(); pChild->UpdateWindow(); _UndoModify--; if ( (_UndoModify == 0) && IsModified () ) { setModifiedState (false); } else if ( (_UndoModify != 0) && !IsModified () ) { setModifiedState (true); } } }
CView* CGeorgesEditDoc::switchToView(CView* pNewView) { CMDIFrameWnd* pMainWnd = (CMDIFrameWnd*)AfxGetMainWnd(); // Get the active MDI child window. CMDIChildWnd* pChild = (CMDIChildWnd*)pMainWnd->MDIGetActive(); // Get the active view attached to the active MDI child window. CView* pOldActiveView = pChild->GetActiveView(); pChild->RecalcLayout(); pNewView->UpdateWindow(); pChild->SetActiveView(pNewView); return pOldActiveView; }