// 第13章 使用MFC编写Windows程序 /* 基于MFC的程序的基本元素 SDI应用程序和MDI应用程序的区别 如何使用MFC Application Wizard 生成SDI和MDI程序 MFC Application Wizard将生成哪些文件,这些文件的内容是什么 在MFC Application Wizard生成的程序中有哪里些主要的类,它们是如何相互连接的 定制MFC Application Wizard生成的程序的通用方法 //13.1 MFC的文档/视图概念 //使用MFC编写应用程序,意味着要接受一种特有的程序结构,其中应用程序数据是以特定的方式存储和处理的 MFC程序的结构包括两个面向应用的实体--文档和视图 13.1.1 文档的概念 文档是给予应用程序中与用户交互的数据集合的名称 文档类是从MFC库中的CDocument类派生的,需要添加数据成员来存储应用程序需要的数据,还要添加成员函数来支持对数据的处理, 应用程序不仅仅限于单文档类型,当应用程序中涉及若干不同种类的文档时,可以定义多个文档类 13.1.2 文档界面 可以选择是让程序每次中处理一个文档,还是处理多个文档,MFC库支持的单个文档界面的一缩写为SDI,用于那些每次只需要打开一个文档的程序,使用这种界面的程序称为SDI应用程序 对于那些需要一次打开多个文档的程序来说,可以使用多文档界面--通常称为MDI 13.1.3 视图的概念 视图总是与特定的文档对像相关 注意:视图对像和显示视图的窗口是截然不同的 显示视图的窗口被称为框架窗口,视图实际上是在自己的,完全充满框架窗口的客户区的窗口中显示的 文档对像可以拥有任意多个与其相关的视图对像,各个视图对像可以提供文档数据或文档数据子集的不同表示方法. 13.1.4 连接文档和视图 MFC提供了使文档与其视图相结合,以及使各个框架窗口与当前的活动视图相结合的机制,文档对像自动维护着指向相关视图的指针列表 //而视图对像拥有存储相关文档对像的指针的数据成员 1 文档模板 文档模板不仅管理程序中的文档对像,还管理与文档相关的窗口和视图, 2 文档模板类 对于SDI应用程序来说,应当使用MFC库中的CSingleDocTemplate类,这个类相当简单,因为SID应用程序只有一个文档,通常也只有一个视图 MDI应用程序则相当复杂,它们拥有多个同时在活动的文档,国在线需要使用另一个类CMultiDocTemplate来定义其文档模板, 13.1.5 应用程序和MFC 应用程序类CMyApp 框架窗口类CMyWnd 视图类CMyView,该类定义如何在CMyWnd对像创建的窗口的客户区中显示CMyDoc对像包含的数据 文档类CMyDoc,该类定义包含应用程序数据文档 13.2 创建MFC应用程序 在基于MFC的windows程序开发过程中, 视图类的功能 CEditView 提供简单的多行文本编辑功能--包括查找和替换,打印 CFormView 提供表单视图: 表单位一种对话框,可以包含提供数据显示和用户输入等功能的控件, 表单实质上与将在第22单学习的,在CLR中运行的Windows Forms应用程序中的窗体具有相同的功能性 CHtmlEditView 该类扩充了CHmtlView类,添加了编辑HTML页面的功能 CHtmlView 提供可以显示Web页面和本地HTML文档的视图 CListView 使我们能够了以列有控件的形式使用文档-视图体系结构 CRichEditView 提供显示和编辑包含丰富编辑文本的文档的功能 CScrollView 提供可以在显示和数据需要时自动添加滚动条的视图 CTreeView 提供以权形控件形式使用文档-视图体系结构的功能 CView 提供查看文档的基本功能 //13.2.2 MFC Application Wizard的输出 1 查看项目文件 2 查看类 3 定义类 注意: 宏不是C++代码,宏是上预处理器指令#define定义的名称,将被通常是C++代码的某些文本代替,但代替宏的也可能是某种常量或符号 4 创建可执行模块 注意: 当使用调试本配置编译程序时,编译器不会检测未初始化的变量,因此,即使我们仍然要测试程序,也可能需要临时使用发布版本配置进行连接和编译 预编译头文件 5 运行程序 6 程序的工作原理 13.3 小结 1 MFC Application Wizard 可以为我们生成完整的,可工作的,根据我们的要求定制的Windows应用程序框架构 2 Application Wizard 可以生成处理单个文档和单个视图的单文档界面(SDI)应用程序,也可以生成能够同时处理多个文档和多个视图的多文档界面(MDI)程序 3 在SDI应用程序中,从MFC类中派生的四个基本的类如下: 应用程序类 框架窗口类 文档类 视图类 4 程序只能有一个应用程序对象,该对像是由Application Wizard在全局作用域内自动定义的 5 文档类对像存储应用程序特有的数据,视图类对像显示文档类对像的内容 6 文档模板类对像用来把文档,视图和窗口捆绑在一起,对SDI应用程序来说,做这件事的是CSingleDocTemplate类;而在MDI应用程序中,使用的是CDocTemplate类 这两个类都是MFC类,通常不需要派生专用的版本 */