兄弟想实现将一个文档类中的数据由多种视图的形式显示出来(分别为曲线和表格),可在建立文档模板时好像并不能选择多个类呀,咋整?

解决方案 »

  1.   

    单文档的话,用CSplitterWnd分成多个窗口就可以拉---------
      ++C++
    ---------
      

  2.   

    用CSplitterWnd分割窗口,具体可以在建立MFC AppWizard(exe)工程时,在经过“你喜欢包含怎样的特点”时,点击“A高级...”,选windows style中的“w应用拆分窗口”,再继续
    下去就可以了。可以在类向导中建立相应的视图类,继承相应的类。比如建立列表视图就可继承
    CListView类。在Cmainfram.cpp中的
    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
    CCreateContext* pContext)
    {
    CSize size;
    CRect rect;
    GetClientRect(&rect);
    size.cx=rect.Width()/2;
    size.cy=rect.Height();
    m_wndSplitter.CreateStatic(this,1,2);
    m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CSplitterListView),size,pContext);
    m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CSplitterFormView),size,pContext);
    return TRUE;
    }
    这样定义就可以了。
    我这里是定义了两个视图,一是列表视图类CSplitterListView,一是形式视图类CSplitterFormView,这样应该可以了。
      

  3.   

    创建新的view类,动态生成实例,然后showwindow就可以了.
    程序中有这个实例的指针,操纵它就可以了.
      

  4.   

    查一下createcontext,好像是这个. 抽了几句代码给你.CCreateContext context;
    context.m_pCurrentDoc = pOldView->GetDocument();
    context.m_pNewViewClass = RUNTIME_CLASS(COpenRefView);
    pCurView = STATIC_DOWNCAST(CView, CreateView(&context)); // 最后生成新视图,并设置
    ASSERT(pCurView != NULL);
    pCurView->OnInitialUpdate();
    SetActiveView(pCurView);
    pCurView->ShowWindow(SW_SHOW);
    pEmpty->ShowWindow(SW_HIDE);
    RecalcLayout();
      

  5.   

    CCreateContext context;
    context.m_pNewViewClass = pNewViewClass;
    context.m_pCurrentDoc = GetActiveDocument();
    CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&context));
    if (pNewView != NULL)
    {
    // the new view is there, but invisible and not active...
    pNewView->ShowWindow(SW_SHOW);
    pNewView->OnInitialUpdate();
    SetActiveView(pNewView);
    RecalcLayout();
    m_nCurrentExample = nCmdID; // finally destroy the old view...
    pOldActiveView->DestroyWindow();
    }
      

  6.   

    一个文档可以对应多个view类的,添加新view类,然后再显示!