在第一部分分析我们知道,框架和视图其实都是 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 ()和框架的 ActiveFrame (),你可以在这里设置窗口的标题
当然你可以在这里添加视图和文档的关联,具体实现是添加以下代码:
context.m_pCurrentDoc = m_pDoc;// m_pDoc 就是你要关联到的文档对象
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。