我现在在我的sdi的程序上又加了一个ceditview(原来的视图也是基于ceditview的),做成了一个分割的界面,我现在要怎样弄才能把这两个ceditview与我的一个DOC关联起来,让这两个ceditview视图能够分别显示doc中不同的内容。(我的doc可以加标示,这样让ceditview视图,分别显示具有自己标示的部分)。
谢谢了。

解决方案 »

  1.   

    MSDN MFC example上有例子。
      

  2.   

    有没有代码阿,多谢了。
    我看到的例子,基本上都是视图切换阿。我这是分割的试图阿。
    我这个是两个分割视图同时显示一个doc的不同部分内容阿。
      

  3.   

    CDocument::AddView这样,View里面就可以调用GetDocument()得到当前文档了
      

  4.   

    代码?
    www.codeproject.com上不是一大堆?
      

  5.   

    如果你是在主框架窗口中利用CSplitterWnd来分割的窗口, 那你肯定是要重写的CFrameWnd::OnCreateClient 这个函数的, 默认是在这里创建视图, 你重写后就是创建分割窗口。 函数原型是: virtual BOOL OnCreateClient( LPCREATESTRUCT lpcs, CCreateContext* pContext );
    // 其中 CCreateContext* pContext。中就包含了与你这个框架窗口构成文档模板的Document的信息。在实现OnCreateClient的时候你一定会调用CSplitterWnd::CreateView 来创建不同分割窗口的视图, 这个函数的原型是:virtual BOOL CreateView( int row, int col, CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext );  注意他的最后一个参数也是CCreateContext* pContext, 在这里你只要在创建不同分割窗口视图的时候, 都将这个参数用OnCreateClient的最后一个参数来作为传入参数, 那么不同分割窗口的视图就会和同一个Doc相关联了。
     struct CCreateContext   // Creation information structure
    // All fields are optional and may be NULL
    {
    // for creating new views
    CRuntimeClass* m_pNewViewClass; // runtime class of view to create or NULL
    CDocument* m_pCurrentDoc;   // for creating MDI children (CMDIChildWnd::LoadFrame)
    CDocTemplate* m_pNewDocTemplate; // for sharing view/frame state from the original view/frame
    CView* m_pLastView;
    CFrameWnd* m_pCurrentFrame;// Implementation
    CCreateContext();
    };与他们相关联的哪个Doc就是CCreateContext::m_pCurrentDoc了。
      

  6.   

    分割窗体我做了,而且每次打开都有数据,但是每次代开的文档的内容都显示在左边的ceditview里面,比如说我要打开t.txt文件,文件内容如下:
    1 aaa
    2 bbb我的目的就是要打开文件以后aaa显示在左边的ceditview中,bbb显示在右边的ceditview中。另外,codeproject.com里面我也找过,没有。
    addview,是添加视图,好像与我做的不一样。我已经用分割窗体把两个view已经弄好了,现在就是不知道怎么同时显示一个文档对应的两个视图。谢谢各位了,大家讨论一下阿,
      

  7.   

    已经转变为如何把数据显示到不同View中的问题了
      

  8.   

    我帮你顶一下,你也帮我顶一下吧,我的问题没人解决阿
    http://community.csdn.net/Expert/topic/4799/4799988.xml?temp=.2282068
      

  9.   

    打开第2个文档使用第2个模版:
             CDocTemplate* pDocT;
    POSITION pos;
    pos = (theApp.m_pDocManager->GetFirstDocTemplatePosition());
    pDocT=theApp.m_pDocManager->GetNextDocTemplate(pos);//这里面pos传进去有错误,我正在看怎么转换类型。
    pDocT->OpenDocumentFile("c:\\aa.mm2");
      

  10.   

    实际上问题已经解决了,你会一个视图,难道就不会多视图?每个视图通过GetDocument()来获取各自需要的数据,视图A是怎么获得AAA的,同样视图B就怎样获得BBB
      

  11.   

    晕,原来的框架好多都是mfc自己完成的阿。
    我再试试,搞定了和大家分享。
      

  12.   

    个人感觉打开的时候不能打开一个文档分开显示在两个视图中,因为那要程序把这个文档打开两次,这样是不允许的,我试了老是抱错。但是在想能不能先把文档打开放在一个缓存中,然后进行处理,分别显示在两个视图当中,我现在是把显示在两个ceditview中编辑的东西,按照左右关系保存到一个文档里面了,虽然不能打开显示,但是可以存储了,也觉得小有成就了,哈哈
    感谢各位的帮助。