第6 章 创建和使用对话框 1 第8章 文档和视图 精讲 MFC 应用程序的核心是文档/视图结构。在前面章节的学习中,已经接触了不少文档/视图结构的应用程序,本章将详细分析其结构和原理,并进一步学习使用复杂的文档结构、构造更加丰富的视图。 8 .1 文档/视图概述 使用MFC 的AppWizard 可以创建三种类型的应用程序: (1) 单文档界面的应用程序(SDI:Single Document Interface) (2) 多文档界面的应用程序(MDI:Multiple Documents Interface) (3) 基于对话框的应用程序(Dialog based) 基于对话框的应用程序框架非常简单,由应用程序类、对话框类构成。通过应用程序类的 InitInstance()函数,构造一个模式对话框对象;调用DoModal()函数,让 Windows 对话框处理程序象通常情况一样接受和分配消息;用户退出对话框后,程序也就结束了。 我们已经知道 SDI 应用程序由应用程序类(CWinApp)、框架窗口类(CFrameWnd)、文档类(CDocument)、视图类(CView)和文档模板类(CSingleDocTemplate)共同作用。MDI 应用程序与 SDI应用程序的主要差别在于:MDI 有 CMDIFrameWnd 和CMDIChildWnd 两个框架窗口类,前一个派生CMainFrame 类,负责菜单等界面元素的主框架窗口管理;后一个派生 CChildFrame 类,负责相应的文档及其视图的子框架维护。而 SDI 由框架窗口类 CFrameWnd 派生 CMainFrame 类。 一个文档可以有多个视图,但一个视图只能对应一个确定的文档。因此,MDI 应用程序需要解决的问题是多个文档的数据管理方法。在MDI 应用程序中,文档模板只支持主窗口。每打开一个新文档时,都调用文档类的成员函数 OnNewDocument(),建立一个由 CMDIChildWnd 派生的新的MDI 子窗口,在子窗口中保存已打开的文档,所有这些细节都由 MFC 库来处理。 8 .1 .1 文档和视图的关系 文档/视图结构的最大特点就是:把数据操作和数据表示分离开来,与数据库管理系统提供的数据库与视图的关系一致。图8-1 说明了文档及其视图之间的关系。所有对数据的修改由文档对象来完成,用视图调用这个对象的方法来访问和更新数据。 VC++6 简明教程 2 图8-1文档和视图的关系 在MFC 应用程序框架中,文档和视图的关系主要体现在:文档类和视图类对象的相互作用和相互访问上。如前面章节所述,关系图示如下: 图8-2 文档和视图的相互访问 对图示中的函数介绍如下: 1. CView ::GetDocument( ) 返回文...