1、第19卷第4期 VoL19 NO4 湖 北 工 学 院 学报 Journal of Hubei Polytechnic University 2004年8月 Aug2004 文章编号10O34684(2004)ub一007403 文档视图结构的MFC应用程序基本框架分析 杨建红 (武汉工业学院计算机系,湖北武汉430021) 摘要文档视图结构是在Visual C+中使用MFC开发基于文档的应用程序的基本框架,在这个框架 中,数据的维护及显示分别由两个不同但彼此紧密相关的对象文档和视图来负责单文档接口(SDI)应 用程序和多文档接口(MDI)应用程序是基于这种结构的两种应用程序类型,本文以单文档
2、接口应用程序为 主,对基于文档视图结构的应用程序的基本框架结构作了较为细致的分析 关键词微软基础类库;文档视图结构;类;单文档接口;多文档接口 中图分类号TP311 文献标识码:A 1 Visual C+ Visual c+是由Microsoft公司推出的功能 强大的可视化集成开发环境它提供了软件代码自 动生成和可视化的资源编辑功能,可以使用户充分 利用具有面向对象特性的c+语言来开发基于 Windows的应用程序 使用Visual c+编程主要有三种方法 第一种方法,使用c语言调用底层Win32 API 函数进行编写Win32 API由几百个函数组成,使 得应用程序中大量的代码设计必须由用户
3、自己编写 完成 第二种方法,利用Microsoft基础类库(MFC) 用C+编写 第三种方法,使用MFC和Microsoft向导来编 写 2 Microsoft基础类库(MFC) MFc是visual c+的一个重要组成部分,它 是一个扩展了的c+类库,提供了大量预先编写 的类和支持代码,他用类的特性封装了Win32 API 函数,将这些函数作为类的成员函数,在进行程序设 计时,如果MFC中某个类能实现程序所需要的功 能,则可以直接调用MFC中该类的方法来完成,此 外利用MFC,还可以从已定义类中派生新类 3应用程序向导(AppWizard)和类向 导(ClassWizard) AppWiza
4、rd和ClassWizard是Visual C+中 两个重要的向导组件,AppWizard的作用是引导用 户一步一步地建立基于MFC类库的Windows应 用程序的基本框架,它用一系列的对话框来询问用 户关于所建应用程序的特性及类型信息,根据这些 信息自动生成应用程序的基本源代码然后用户可 使用ClassWizard(用来管理程序中的类、对象和消 息)在应用程序框架中添加代码以派生类、修改类、 定义消息处理和数据处理 因此利用上文介绍的第三种方法来新建一个 Windows应用程序不仅可以直接使用MFC预先编 写的类和支持代码,还可利用向导自动生成许多用 来完成常规编程任务的源代码,大大简化了W
5、in dows应用程序的设计工作 4 文档视图结构应用程序的基本框 架 利用AppWizard可以产生几种不同类型的应 用程序,其中之一的基于文档视图结构的应用程序 充分利用了MFC中的文档视图框架结构,程序的 数据由文档对象来维护,并通过视图对象提供给用 户1单文档接口(SDI)应用程序和多文档接口 (MDI)充分利用了MFC提供的文档视图编程结 构此外,还有基于对话框的应用程序、基于窗体的 收稿日期2004一o423 作者简介杨建T(1970-),女,湖北孝感人,武汉工业学院讲师,工学硕士,研究方向:计算机应用 维普资讯 http:/ 第19卷第4期 杨建红 文档视图结构的MFC应用程序基
6、本框架分析 75 应用程序,它们只使用了部分文档视图框架的功 能 41 SDI应用程序的基本框架 当用AppWizard生成SDI应用程序时,系统自 动生成了一个应用程序的基本框架结构,有4个基 本的类:应用程序类、主框架窗口类、文档类、视图 类 类的定义在头文件中,类的功能在实现文件 中程序所要完成的大部分工作均分布在这4个类 中 应用程序类是应用程序运行的基础,用来管理 整个应用程序,负责程序的例行初始化,完成最后程 序整理,统一管理程序收到的所有的消息,然后把消 息分配给应用程序的其他对象 主框架窗口类负责管理程序的主窗口,包含窗 口边框、标题栏、菜单栏、系统菜单栏、工具栏、状态 栏等各
7、种元素由于主框架窗口类继承了处理窗口 的一般事件的Windows消息例如窗口最大化、最小 化、移动窗口等,因此用户并不需要经常对该类进行 操作 文档类和视图类是用户经常用到的两个类,文 档类与视图类交互工作,视图类负责管理视图窗口, 显示程序中的数据和处理用户输人,而数据是从文 档类中获得,视图窗口是框架窗口的子窗口,显示在 主框架窗口的客户区中文档类封装了应用程序的 数据管理功能,负责存放程序数据、读出数据并进行 IO操作用户与文档的交互是通过视图来完成的 在基于文档视图结构的MFC程序中,文档处于中 心地位,视图类和框架类都是为文档类服务的 4个主类的关系可用图1来表示 图1 4个主类的关
8、系图 父类 子类 各类之间通过传递Windows消息进行通信,通 过相互调用对方的公有成员函数进行数据交换应 用程序被调入内存并准备运行时,系统首先生成一 个应用程序类对象,然后由在MFC中定义的win Main()接受控制,调用应用程序对象的InitInstance 成员函数初始化应用程序,该函数主要作了这样几 项工作: 1)动态地生成了文档模板对象,并将它加入到 应用程序的文档模板链表中 2)调用应用程序对象的OnFileNew成员函数 生成一个新文档,并由文档模板对象自动创建文档 类对象、视图类对象和主框架窗口对象以及相关的 主窗口与视图窗口 3)调用主框架窗口对象的ShowWindow
9、和 UpdateWindow成员函数在屏幕上显示主框架窗口 及窗口内容接着WinMain调用应用程序对象的 Run函数进入消息循环,接收或分配发送给应用程 序中的对象的所有消息 视图类对象响应发来的消息,调用其成员函数 GetDocument获得与其相关联的文档对象的指针, 通过该指针调用文档对象的成员函数读取数据显示 到视图窗口或将用户的修改传递给文档对象,由文 档对象完成编辑和保存 当系统获得wMQUIT消息时,表示用户准备 结束程序,此时消息循环退出,WinMain函数返回, 应用程序终止这样各类之间紧密联系并共同协作 完成了应用程序任务 下面利用AppWizard来建立一个功能简单的
10、单文档接口的MFC应用程序Program,program程 序显示和保存用户输入的字符串 1)按照向导的提示生成Program应用程序的 基本框架确保选中“DocumentView architecture support”选项 2)打开ProgramDoch文件,在public中添加 如下代码: Cstring m str; 存放输入的字符串 3)利用ClassWizard,在视图类ProgramView 中加入WMCHAR消息的消息处理函数Onchar, 为该函数添加如下代码: CProgramDoc PDoc=GetDocument(); 获得文档类对象的指针 PDocrn_str+一n
11、char;将输入字符串保存到文档对象中 CClientDC ClientDC(this); 生成设备描述表 ClientDCTextout(0,0,PDoc-m_str); 在视图窗El显示数据 4)打开ProgramViewcpp文件,在OnDraw 函数中添加如下代码: PDC-TextOut(0,0,PDoc-mstr)窗El重绘时显示数据 42 MDI应用程序的框架结构 单文档接口应用程序一次只能打开一个文档, 而多文档接口应用程序一次可打开多个文档,每个 文档在不同的子窗口内显示多文档接口应用程序 有5个主类:应用程序类、主框架窗口类、视图类、文 档类、子框架窗口类应用程序类、视图类
12、、文档类与 单文档接口应用程序的功能相似,主框架窗口管理 程序的主窗口,但主窗口不包含单个视图窗口,不与 单个文档产生联系,因此文档模板对象不存放主窗 维普资讯 http:/ 76 湖 北 工 学 院 学报 2004年第4期 口类消息,生成新文档时文档模板对象不生成主框 架窗口对象子框架窗口类管理放置每个打开文档 的子窗口打开一个文档时由文档模板对象生成子 窗口类对象,一个子框架窗口的客户区显示一个打 开文档的视图窗口各类之间的关系在此不再赘述 5 结束语 文档视图结构是MFC提供的基本的编程结 构,了解文档视图结构是深入学习MFC的基础 参考文献 E1 黄维通Visual C+面向对象与可视
13、化程序设计 EM3北京:清华大学出版社,2001 E2Sphar CVisual C+60学习指南M前导工作室 译北京:机械工业出版社,2000 Analysis of the Basic Frame of MFC Application Based on DocumentView Architecture YANG Jianhong (Depof Computer,Wuhan Polytechnic Univ,Wuhan 430021,China) Abstract:DocumentView architecture is a kind of basic frame of MFC appli
14、cation based on documentIn this kind of frame,Document class is used for saving data and View class is used for showing data,both the classes differ greatly but relate nearly to one anther。Single document interface application and Multiple document interface apalication are two kinds of type of appl
15、ication based on DocumentView architectur In this paper,we analyze in detail the basic frame of MFC application based on DocumentView architec ture Keywords:microsoft foundation class library;documentview architecture;class;single document inter face;multiple document interface 责任编辑:张岩芳 (上接第57页) Tec
16、hnical Research of Fuse Welding by Medium Frequency for Sliding Valve at Mine Transmitting Device LIU Rong (School of Mechand ElectrSciand Engin,Wuhan Univof Technology,Wuhan 430074,China) Abstract:Technology of fuse welding by medium frequency for sliding valve at mine transmitt-ing device is studiedThe result indicates that it improves traditional technology and function Keywords:mine transmitting device;sliding valve;fuse welding of medium frequency 责任编辑:张培炼 维普资讯 http:/