文档详情

MFC编程基础2文档视图结构应用程序.doc

发布:2018-04-02约1.45万字共25页下载文档
文本预览下载声明
第2章 文档/视图结构应用程序 1. 文档/视图结构的思想是将数据的管理与显示分离,其中文档用于管理应用程序的数据,而视图是用户界面,用于显示、打印文档中的数据,并管理与用户的交互。 2. SDI具有文档/视图结构的程序框架,该框架包括应用程序类、窗口框架类、文档类和视图类,编程的任务是在文档类和视图类中添加适当的代码。其中文档类中一个重要的成员函数是OnNewDocument ,用户在此添加代码完成对数据的初始化;而视图类中最重要的成员函数是OnDraw ,通过在该函数中添加代码实现窗口内容的输出。 3. 通过介绍几种SDI结构的典型应用程序来了解其结构及设计方法,典型应用包括: ?? 利用画笔、画刷等工具及位图处理的方法实现文字和图形的输出。 ?? 利用定时器控件制作动画程序。 ?? 对鼠标和键盘进行编程的基本方法。 ?? 文件、字体、颜色等几种通用对话框的使用方法及自定义对话框的设计、调用方法。 ?? 菜单的设计方法。文档/视图结构。 假定本例的工程名为 TEST ,程序创建过程如下: (1)利用 AppWizard 创建一个 SDI 应用程序框架。 (2)文档类是存放数据的主要地方,本例在其中说明一个存放矩形框数据的 CRect 类对象 r 和一个存放字符串的 CString 对象 s ,方法为: 在工作区的“ ClassView ”中,双击文档类CTESTDoc 类,在该类代码中添加如下代码: public: CRect r; CString s; 说明: CRect 是 MFC 定义的一个类,有 4 个数据成员: left 、 top 、 right 和 bottom 。 left, top 和( right, bottom )分别表示一个矩形左上角坐标和右下角坐标,单位是像素(点)。窗口中央客户区中坐标系原点 0,0 在左上角,轴正方向朝下。 (3)在文档类的成员函数 OnNewDocument 中完成数据成员的初始化。方法为: 在工作区的 ClassView 中展开 CTESTDoc 类,找到其成员函数 OnNewDocument ,在其中添加代码: BOOL CTESTDoc::OnNewDocument if !Cdocument::OnNewDocument return FALSE; // TODO: add reinitialization code here // SDI documents will reuse this document r CRect 100,60,260,100 ; s ”同舟共济 自强不息”; return TRUE; 说明:阴影部分为添加的代码。 (4)在工作区的“ Class View ”中展开视图类 CTESTView 类,找到其成员函数 OnDraw ,添加输出矩形框和文字的代码: void CTESTView::OnDraw CDC* pDC CTESTDoc* pDoc GetDocument ; ASSERT_VALID pDoc ; // TODO: add draw code for native data here pDC- Rectangle pDoc- r ; //用文档中的数据 r画矩形框 pDC- TextOut 110,70,pDoc- s ; // 输出函数用法 见 2.2 节 说明: ① GetDocument 是视图类的一个重要成员函数,其返回值是指向当前文档的指针。视图类中的成员函数通过它访问文档类的公有数据成员。 ② 函数 OnDraw 是实现输出的关键函数,绝大多数的显示工作都是在这个函数中完成的。其参数 pDC 指向窗口中央的客户区(视图)对应的输出设备,程序使用该输出设备对象的 Rectangle 和 TextOut 函数绘制矩形和输出文字。CDC是设备上下文类,输出设备是CDC类的对象。 5 运行程序,结果如图所示。 SDI 应用程序框架 1.应用程序类 每个应用程序类必须从 CWinApp 派生出自己的应用程序类,该类封装了包括初始化、运行和结束的整个过程,其名称是 AppWizard 根据工程名称自动命名的,规则如下: (1)如果工程名符合标识符的命名规则,则应用程序类名由字母 C 、工程名和 App 三部分组成。例如,工程名为 TEST ,则应用程序类名为 CTESTApp 。 (2)如果工程名以数字开始,则应用程序类名由字母 Cmy 、工程名和 App 三部分组成。例如,工程名为 1TEST ,则应用程序类名为 CMy1TESTApp 。 (3)忽略工程名的汉字。 文档类和视图类的命名规则与应用程序类类似,区别在于在后面分别添加了 Doc
显示全部
相似文档