100分求一视图/文档问题
我现在在我的sdi的程序上又加了一个ceditview(原来的视图也是基于ceditview的),做成了一个分割的界面,我现在要怎样弄才能把这两个ceditview与我的一个DOC关联起来,让这两个ceditview视图能够分别显示doc中不同的内容。(我的doc可以加标示,这样让ceditview视图,分别显示具有自己标示的部分)。
谢谢了。
问题点数:100、回复次数:17Top
1 楼syy64(太平洋)回复于 2006-06-04 11:50:27 得分 2
MSDN MFC example上有例子。Top
2 楼wu7104()回复于 2006-06-04 16:39:07 得分 0
有没有代码阿,多谢了。
我看到的例子,基本上都是视图切换阿。我这是分割的试图阿。
我这个是两个分割视图同时显示一个doc的不同部分内容阿。Top
3 楼handsomge(汗衫)回复于 2006-06-04 17:14:10 得分 1
CDocument::AddView
这样,View里面就可以调用GetDocument()得到当前文档了Top
4 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-06-04 19:11:46 得分 2
代码?
www.codeproject.com上不是一大堆?Top
5 楼ks_gq(键盘人生)回复于 2006-06-04 21:09:02 得分 3
如果你是在主框架窗口中利用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了。Top
6 楼wu7104()回复于 2006-06-04 21:48:11 得分 0
分割窗体我做了,而且每次打开都有数据,但是每次代开的文档的内容都显示在左边的ceditview里面,比如说我要打开t.txt文件,文件内容如下:
1 aaa
2 bbb
我的目的就是要打开文件以后aaa显示在左边的ceditview中,bbb显示在右边的ceditview中。
另外,codeproject.com里面我也找过,没有。
addview,是添加视图,好像与我做的不一样。
我已经用分割窗体把两个view已经弄好了,现在就是不知道怎么同时显示一个文档对应的两个视图。
谢谢各位了,大家讨论一下阿,Top
7 楼license(序列号)回复于 2006-06-04 22:19:31 得分 12
已经转变为如何把数据显示到不同View中的问题了Top
8 楼wu7104()回复于 2006-06-05 07:45:47 得分 0
自己顶一下,希望大家都来讨论阿。哈
谢了Top
9 楼aabbaabbaa()回复于 2006-06-05 08:38:53 得分 80
我帮你顶一下,你也帮我顶一下吧,我的问题没人解决阿
http://community.csdn.net/Expert/topic/4799/4799988.xml?temp=.2282068Top
10 楼wu7104()回复于 2006-06-05 12:39:25 得分 0
自己再顶一下啊,各位大哥请帮忙啊.能否解决我六楼说的问题啊.
谢谢了Top
11 楼aabbaabbaa()回复于 2006-06-05 12:39:56 得分 0
你的问题我不会,再顶一下Top
12 楼aabbaabbaa()回复于 2006-06-05 12:46:08 得分 0
打开第2个文档使用第2个模版:
CDocTemplate* pDocT;
POSITION pos;
pos = (theApp.m_pDocManager->GetFirstDocTemplatePosition());
pDocT=theApp.m_pDocManager->GetNextDocTemplate(pos);//这里面pos传进去有错误,我正在看怎么转换类型。
pDocT->OpenDocumentFile("c:\\aa.mm2");Top
13 楼wu7104()回复于 2006-06-05 16:57:16 得分 0
自己再顶一下啊,各位大哥请帮忙啊.能否解决我六楼说的问题啊.
谢谢了Top
14 楼wu7104()回复于 2006-06-05 22:03:20 得分 0
各位高手都去哪里了阿?
各位版主,高手大家多讨论一下阿。不要让这个问题沉了阿。
谢了阿Top
15 楼handsomge(汗衫)回复于 2006-06-05 22:24:26 得分 0
实际上问题已经解决了,你会一个视图,难道就不会多视图?
每个视图通过GetDocument()来获取各自需要的数据,视图A是怎么获得AAA的,同样视图B就怎样获得BBBTop
16 楼wu7104()回复于 2006-06-06 09:06:55 得分 0
晕,原来的框架好多都是mfc自己完成的阿。
我再试试,搞定了和大家分享。Top
17 楼wu7104()回复于 2006-06-06 10:12:24 得分 0
个人感觉打开的时候不能打开一个文档分开显示在两个视图中,因为那要程序把这个文档打开两次,这样是不允许的,我试了老是抱错。
但是在想能不能先把文档打开放在一个缓存中,然后进行处理,分别显示在两个视图当中,
我现在是把显示在两个ceditview中编辑的东西,按照左右关系保存到一个文档里面了,
虽然不能打开显示,但是可以存储了,也觉得小有成就了,哈哈
感谢各位的帮助。Top




