新手急问,单文档多视图的实现
经常见到讲用CSplitterWnd拆分窗口:
-----------------CMainFrame::OnCreateClient--------------------------------------------
CRect cr;
GetClientRect(&cr);
CSize paneSize_right(cr.Width()*2/3,cr.Height()/2);
CSize paneSize_left(cr.Width()/3,cr.Height());
if(m_Splitter01.CreateStatic(this,1,2)==NULL)
return FALSE;
m_Splitter01.CreateView(0,1,RUNTIME_CLASS(CTestView01),paneSize_left,pContext);
if(m_Splitter02.CreateStatic(&m_Splitter01,2,1,WS_CHILD|WS_VISIBLE,m_Splitter01.IdFromRowCol(0,1))==NULL)
return FALSE;
m_Splitter02.CreateView(0,0,RUNTIME_CLASS(CTestView02),paneSize_left,pContext);
m_Splitter02.CreateView(1,0,RUNTIME_CLASS(CTestView03),paneSize_left,pContext);
--------------------------------------------------------------------------------------
CTestView01是向导生成的类,我现在想让CTestView02是CListView,CTestView03是CHtmlView,
直接替换CTestView02为CListView,CTestView03为CHtmlView,编译通过,执行时报错,
我要怎么修改才能达到目的? 为什么会出错?
最好能给出个单文档使用三个不同视图的例子,谢谢!
问题点数:100、回复次数:15Top
1 楼zh050317(我行^_^我素)回复于 2006-06-01 22:25:18 得分 10
http://www.vckbase.com/document/listdoc.asp?mclsid=5&sclsid=507Top
2 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-06-01 22:35:54 得分 10
www.codeguru.com
www.codeproject.com
都有示例,可以去看一下。
MFC FAQ一书也比较详细的讲了。Top
3 楼WecanHuang(曾阿牛)回复于 2006-06-01 22:59:35 得分 10
vckbase也有Top
4 楼nirvono(川)回复于 2006-06-02 08:29:11 得分 0
看不懂~~除应用程序向导生成的视图,其他几个视图怎么添加进来的?Top
5 楼nirvono(川)回复于 2006-06-02 08:35:15 得分 0
课程设计快交了,急~~本来想加点新鲜的东来
正放狗搜"MFC FAQ"Top
6 楼xiao_fang(frank)回复于 2006-06-02 08:59:32 得分 10
既然“想让CTestView02是CListView,CTestView03是CHtmlView”
当然得先生成这两个类,利用向导创建即可,但要注意将其构造函数改成public
http://www.vckbase.com/document/viewdoc/?id=192
讲得很清楚
PS:你那几个视图的大小怎么都设成paneSize_leftTop
7 楼nirvono(川)回复于 2006-06-02 10:32:39 得分 0
CListView和CHtmlView都是通过"插入"-->"类"添加的,
构造函数也改成public了
我建立的工程名叫MySplitter,如下添加CMySplitterView也报错?为什么??
------------------------------------------------------------------------------------
if(m_Splitter01.CreateStatic(this,1,2)==NULL)
return FALSE;
if(m_Splitter02.CreateStatic(&m_Splitter01,2,1,WS_CHILD|WS_VISIBLE,m_Splitter01.IdFromRowCol(0,1))==NULL)
return FALSE;
m_Splitter02.CreateView(0,0,RUNTIME_CLASS(CMySplitterView),CSize(100,1000),pContext);
m_Splitter02.CreateView(1,0,RUNTIME_CLASS(CMySplitterView),CSize(100,100),pContext);
m_Splitter01.CreateView(0,1,RUNTIME_CLASS(CMySplitterView),CSize(100,100),pContext);
-------------------------------------------------------------------------------
提示"File:winsplit.cpp
Line:255"
新手,麻烦各位不吝赐教,谢谢!Top
8 楼Samlinsky(风轻君)回复于 2006-06-02 16:06:28 得分 10
例程分析窗口的切分和动态改变
http://www.yesky.com/20011108/203918.shtml
Top
9 楼nirvono(川)回复于 2006-06-02 18:20:35 得分 0
楼上的文章看过了,还是不懂~,我比较菜=_=
CreateView函数原型里RUNTIME_CLASS(CMyView)对应的是CRuntimeClass *pViewClass;
RUNTIME_CLASS()返回CRuntimeClass结构?
我使用“插入”-->“类”,插入两个类,然后更改构造函数为“public”
再把两个新类的头文件包含进CMainFrame.cpp。
只这样作是不是还不够?
怎么让新类成为“run-time class”,可以被RUNTIME_CLASS返回?
不懂~,各位帮帮忙,谢谢Top
10 楼johnyang628()回复于 2006-06-03 21:08:52 得分 0
是不是在调用CreateView函数的时候应该连接不同的视图类呢?好像不能连接同一个视图吧Top
11 楼nirvono(川)回复于 2006-06-05 18:55:13 得分 0
我是很无奈的结贴~~以为再也不在这里发帖问问题了Top
12 楼xiao_fang(frank)回复于 2006-06-06 11:36:22 得分 10
大家都很尽力,也提供了很多例子文章的链接,你却不仔细研讨,还颇多抱怨,心态不好。
这样学习,难有提高,为你难过:(Top
13 楼pripor(心欲若止水,落花起涟漪)回复于 2006-06-06 12:39:29 得分 20
呵呵
两个view绑定时连doc都没有
client不承认Top
14 楼johnyang628()回复于 2006-06-17 10:34:01 得分 0
学习更多的是靠自己Top
15 楼lisypro()回复于 2006-06-18 11:01:46 得分 20
把源程序发给我 lisypro@sohu.com
帮你看看Top




