电子工程师技术服务社区
- 社区首页
- 下载
- menu_exp.rar
资料描述
文档、视图和框架简介
在之前创建的单文档工程menu_exp中,我们可以看到mfc向导自动为我们生成了cmenu_expdoc类、cmenu_expview类和cmainframe类,它们就分别是文档类、视图类和框架窗口类。
文档/视图结构是mfc提供的一种不错的设计,它将数据的处理和显示分开来,这样更便于我们对程序的维护和扩展。下面分别介绍这种结构中涉及到的几个重要概念。
文档
文档对象用于管理和维护数据,包括保存数据、取出数据以及修改数据等操作,在数据被修改以后,文档可以通知其对应的所有视图更*显示。
视图
视图对象将文档中的数据可视化,负责从文档对象中取出数据显示给用户,并接受用户的输入和编辑,将数据的改变反映给文档对象。视图充当了文档和用户之间媒介的角色。
框架
一个文档可能有多个视图界面,这就需要有框架来管理了。框架就是用来管理文档和视图的。框架窗口是应用程序的主窗口,应用程序执行时会先创建一个最顶层的框架窗口。视图窗口是没有菜单和边界的子窗口,它必须包含在框架窗口中,即置于框架窗口的客户区内。
文档模板
文档模板中存放了与文档、视图和框架相关的信息。应用程序通过文档模板创建文档对象、框架窗口对象和视图对象。另外,文档、视图和框架之间的关系也是由文档模板来管理的。
我们来看看menu_exp单文档程序中,cmenu_expapp应用程序类的成员函数cmenu_expapp::initinstance()创建并注册文档模板的部分:
在构造文档模板类csingledoctemplate的对象时,第一个参数是资源id idr_mainframe,它包括框架窗口图标等,后面的三个参数都是runtime_class宏的调用,runtime_class用于获取类的运行时信息,文档模板可以根据这些动态创建信息来创建相应类的对象,即文档对象、框架窗口对象和视图对象。adddoctemplate函数用来注册文档模板对象。
框架类、文档类和视图类
在vs2012自动生成的代