我写了一个分割窗口,其中一个是formview,我想在程序运行过程中,将这个formview换成其他的formview,不知道是不是可以,哪位能教教我?
做界面,俺是新手...

解决方案 »

  1.   

    当然可以,下面有段代码,你不妨参考一下
    void CMainFrame::OnViewSwitch() 
    {
    m_bActiveView=!m_bActiveView; CDataBaseDoc* pDoc=(CDataBaseDoc*) m_pActiveView->GetDocument();
        CView *pOldActiveView;
    pOldActiveView=GetActiveView();             
    switch(m_bActiveView)
    {
    case FALSE:
    m_pActiveView=new CDataBaseView;
    break;
    case TRUE:
    m_pActiveView=new CDataGraphView;
    break;
    }
    CCreateContext context;   
    context.m_pCurrentDoc=pOldActiveView->GetDocument();
    m_pActiveView->Create(NULL, NULL, WS_BORDER|WS_CHILD,
    CFrameWnd::rectDefault, this, 0, &context);
    m_pActiveView->OnInitialUpdate();
        SetActiveView(m_pActiveView);       
        m_pActiveView->ShowWindow(SW_SHOW);  
        pOldActiveView->ShowWindow(SW_HIDE);   m_pActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); delete pOldActiveView;    RecalcLayout();          
    }
      

  2.   

    1 先用CSplitterWnd::DeleteView把视图删除了再重新建立,然后用CSplitterWnd::RecalcLayout更新
    2 视图的切换m_spliterwnd.GetPane得到视图指针通过隐藏显示的方法
      

  3.   

    http://www.codeproject.com/splitter/DanCMultiViewSplitter.asp
      

  4.   

    http://www.codeguru.com/Cpp/W-D/splitter/article.php/c1533/
    http://www.codeguru.com/Cpp/W-D/splitter/article.php/c1529/
      

  5.   

    我现在是用DeleteView删除了,也重建了,但,需要手动才能刷新
    有没有办法自动更新的?
      

  6.   

    你们都使用了m_wndSplitter.DeleteView(0,1);
    但是为什么我在DeleteView的时候总是会显示(终止,重试,忽略警告框),
    我试着选择忽略可以切换,
    但怎么不让这个框出来呢?
    这是怎么回事?
    建立的时候我使用的是:
    m_wndSplitter.CreateStatic(1,2);
    m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CLeftView),CSize(200,200), &Context);
    m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CFrame1),CSize(200,200), &Context);