2 qq 28254507 qq_28254507 于 2016.02.15 12:30 提问

求助!MFC单文档多视图的各视图的问题

如果我只用系统最初建好的文档类来储存数据,而各视图显示的是数据的不同部分,
1、首先这样是否能实现?还是说必须每个视图要建一个文档?
2、如果可以。那么我怎么获得其中某个视图的指针?(比如我这里用到的有CTreeView,CRichEditView,并且CRichView的视图块有两个,需要让他们独立显示,而不是共同显示一个数据)

目前只是把视图单纯地分割了,代码如下

 BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
    // TODO:  在此添加专用代码和/或调用基类
    if (!m_wndSplitter.CreateStatic(this, 1, 2))
    {
        return FALSE;
    }
    CRect rect;
    GetClientRect(&rect);

    m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(TreeView), CSize(rect.Width() / 3 - 170, rect.Height()), pContext);

    if (!m_wndSplitter2.CreateStatic(&m_wndSplitter, 1, 2, WS_CHILD | WS_VISIBLE, m_wndSplitter.IdFromRowCol(0, 1))
        || !m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(RichEditView), CSize(rect.Width() / 3 - 50, rect.Height()), pContext)
        || !m_wndSplitter2.CreateView(0, 1, RUNTIME_CLASS(RichEditView), CSize(rect.Width() / 3, rect.Height()), pContext))
    {
        return FALSE;
    }
    return TRUE;
    //return CFrameWnd::OnCreateClient(lpcs, pContext);
}

2个回答

VisualEleven
VisualEleven   Ds   Rxr 2016.02.16 14:01
已采纳

可以通过CMainFrame类来中转。CSplitterWnd::GetPane()得到各个视图的CView*指针

oyljerry
oyljerry   Ds   Rxr 2016.02.15 16:10

所有的view都保存指针到mainframe中 然后每个view找mainframe要其它view

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MFC单文档多视图之间的数据传递
所谓的单文档多视图的程序,可以理解c
MFC单文档多视图的切换的3种实现
MFC单文档多视图的切换的3种实现 MFC建立程序工程向导时最后一步,选择CFormView作为View的基类。 假设工程名称为CMySingleDoc。 默认生成的View类名为:CMySingleDocView,它的属性为WS_CHILD,切记必须为WS_CHILG子窗口风格,不能为WS_POPUP弹出式窗口风格。   进入工程资源视图,添加对话框资源,添加控件,
MFC SDI单文档多视图的实现及自由切换(2种实现方式简析)
MFC SDI单文档多视图的实现及自由切换结合网上学习总结别人的例子,以及参考MSDN给出的例子,对SDI多视图的实现进行了一个简单的总结,以记录学习点滴.首先在H文件有如下声明:class CMultiViewApp : public CWinApp{public:       CView* m_pFirstView;       CView* m_pOtherV
单文档多视图的实现方法
本文利用 CMFCTabCtrl 实现多视图的选项卡式显示,程序截图如下: 第一步:新建两个对话框,并分别为其添加类 CFirstDlg、CSecondDlg; 第二步:分别对两个对话框的属性做如下设置: NoInheritLayout          True Visible                          True
单文档多视图(分割窗口)
单文档多视图 本节演示了如何在一个框架中显示两个视图。 1.实例说明 在MFC中,视图必须存在于框架之中,而单文档只有一个框架,所以一次只能显示一个视图,如果想显示新视图必须关闭当前视图。如果想同时显示两个视图可以用分割窗口。 本示例用于查询学生信息,数据存在文档类中,用户可以在第一个视图中输入学号,单击“查找”按钮查找学生消息,结果会显示在第二个视图中,效果如图1-53所示。 图1
单文档多视图+MFC多文档多视图编程
http://wenku.baidu.com/view/61046a1810a6f524ccbf85eb.html
单文档多视图切换方法
摘要:本文通过一个程序实例描述了在VC 6.0(vc2008可行)下如何在单文档程序中通过菜单动态控制多  个窗体的切换。     一、 引言     我们在编制程序中根据需求的不同会在程序风格上选择多文档、单文档或是对话框模式  ,对于单文档模式可能是我们使用比较多的,但有时我们想采用单文档的形式显示多个不同  的窗体,如作为数据库前台应用程序就会遇到此类问题,数据库由大量的表
详细讲解如何在MFC单/多文档中创建多视图(具体代码)
【转】MFC 多文档  2010-01-11 17:23 如何在MFC单文档中创建多视图 基本步骤如下: 1.首先创建一个MFC单文档应用程序。 2.添加4个MFC类TopLView、BottomLView、TopRView、BottomRView,基类为CView。 3.添加一个MFC类CControlForm,基类为CFormView,对话框ID默认
MFC单文档多视图之间穿数据 笔记
就是利用工程中的doc文件 1.给doc文件增加新变量, 2.在需要给该变量赋值的视图类中利用 XXXDoc* pDoc = (XXXDoc*)GetDocument();来获得Doc类的指针 3.用pDoc->新增的变量=变量值       给要传输的数据赋值 4.再需要接受该变量的视图类中利用XXXDoc* pDoc = (XXXDoc*)GetDocument();来获得Doc
MFC一一单文档下实现多标签视图(继承CTabView类)
在上一节中,讲述了拆分窗口类CSplitterWnd,具体见:http://blog.csdn.net/xuanyin235/article/details/77948615 其间提到了CTabViewEx视图类,这个类继承自CTabView类,接下来我们讲解一下单文档视图中有关多标签视图的具体实现。