我只知道切割窗体是在CMainFrame中的OnCreateClient用CSplitterWnd切
如图这种切换该怎么写喃?
一按按钮,切换为另一种分割视图

解决方案 »

  1.   

    上面的按钮使用的是属性页控件,或者用按钮代替的伪属性页控件
    下面就是使用CSplitterWn切割试图
    项左边的树型控件和列表视图mfc都自带的,觉得不好看,自绘!
      

  2.   

    我觉得应该是单文档程序吧,上面按钮式工具栏,不管这个了,主要是问这两种CSplitterWnd切割的视图怎么切换?
    因为以我的水平在CMainFrame中的OnCreateClient用CSplitterWnd切了我就觉得定型了,不知道怎么换咯~~
      

  3.   

    电驴怎么弄的不知道,网上找过能切换view的代码。
      

  4.   

    感觉楼上说的方法可行 切换view还真的没做过呢 
    学习
      

  5.   

    单文档切换代码:void CMainFrame::SwitchToForm(int nForm)               //进行视图切换的代码函数
    {
      //CDocument* pDoc = GetActiveDocument();
        CView *pOldActiveView=GetActiveView();             //保存旧视图
        CView *pNewActiveView=(CView*)GetDlgItem(nForm);   //取得新视图
        if(pNewActiveView==NULL)
        {
            switch(nForm)
                //这些ID是对话框的标志符,但也可以用其他的标志
            {
            case IDD_XUANKE_FORM :
                pNewActiveView=(CView*)new CXuankeView;
                break;
            case IDD_DLG_GRADE :
                pNewActiveView=(CView*)new CGradeView;
                break;
            case IDD_DLG_ADMIN :
                pNewActiveView=(CView*)new CAdminView;
                break;
            case IDD_DLG_TEACHER :
                pNewActiveView=(CView*)new CTeacherView;
                break;
            case IDD_DLG_ADDCLASS :
                pNewActiveView=(CView*)new CAddclassView;
                break;
            }
            CCreateContext context;   //将文挡和视图相连
            context.m_pCurrentDoc=pOldActiveView->GetDocument();
    pNewActiveView->Create(NULL, NULL, WS_BORDER|WS_GROUP  |WS_CHILD ,
                CFrameWnd::rectDefault, this, nForm, &context);
            pNewActiveView->OnInitialUpdate();
        }
        SetActiveView(pNewActiveView);        //改变活动的视图
        pNewActiveView->ShowWindow(SW_SHOW);  //显示新的视图
        pOldActiveView->ShowWindow(SW_HIDE);  //隐藏旧的视图    if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CXuankeView))
    pOldActiveView->SetDlgCtrlID(IDD_XUANKE_FORM); else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CGradeView))
    pOldActiveView->SetDlgCtrlID(IDD_DLG_GRADE); else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CAdminView))
    pOldActiveView->SetDlgCtrlID(IDD_DLG_ADMIN); else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CTeacherView))
    pOldActiveView->SetDlgCtrlID(IDD_DLG_TEACHER);
    else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CAddclassView))
    pOldActiveView->SetDlgCtrlID(IDD_DLG_ADDCLASS);
        pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); 
    delete pOldActiveView;   //删除旧视图

    RecalcLayout();          //调整框架窗口
    }