CRect rect;
m_pAnotherView->Create(NULL, NULL, WS_CHILD, rect, m_pMainWn
d, m_IDFORANOTHERVIEW, &context);
在框架和视图关联的时候进行设置,具体见一下框架和视图关联部分。
2.2 框架和视图的关联
在第一部分分析我们知道,框架和视图其实都是 windows 窗口,不过框架
提供了菜单、标题栏、状态栏等资源,而视图则只是一个矩形区域。 MFC 程序
中视图决定大多数时候要依附于一个框架( SDI 中的 MainFrame 和 MDI 中
的子框架窗口),可以这样理解,框架相当于一个窗口容器(当然它本身也是一
个 windows 窗口),而视图则正好是放置在框架内客户区域的内容。
框架和视图的关联也可以通过 模仿 MFC AppWizard 实现,使用
CDocTemplate 的构造函数实现,即和 2.1 中文档和视图间的关联方式相同,
这里就不再给出,参看上面的详细实现即可。
同上面的分析,在很多的时候我们并不是需要提供一个新的文档模版,我们
只是需要显示一个新的窗口( MDI 程序),例如我们在作 MIS 系统界面管理
的时候,经常出现的情况就是用户点击一个菜单选项,即弹出一个处理窗口。而
要显示一个新的窗口,我们可以通过 CDocTemplate 的 OpenDocumentFile
()方法打开一个文档实现,这样就建立一套的文档、视图和框架的体系。上面
已经分析到,我们看到 MFC 的窗口实际上框架和视图的一个结合体,我们并不
一定要提供文档、视图、框架的整个体系,我们只需要框架和视图的结合即可实
现窗口的显示,这就要经过两个步骤实现:第一步将视图和框架关联,第二步显
示框架(也就是一个 windows 窗口的显示)。以下给出框架和视图关联的具体
实现:
CChildFrame * pFrm = new CChildFrame();// 框架可以是你新建或者定
制的框架类
CCreateContext context;
context.m_pNewViewClass = RUNTIME_CLASS(CDemoView);// 视图可
以是你想显示的视图
pFrm->LoadFrame(IDR_TEST2TYPE,WS_CHILD
WS_OVERLAPPEDWINDOW, this, &context);// 菜单资源你可以修改
pFrm->ShowWindow(SW_SHOW);// 显示窗口
pFrm->InitialUpdateFrame(NULL,true);// 调用视图的 OnInitialUpdate ()