- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC程序結构分析
MFC程序结构分析 2008-11-08 16:39
分类:VC\MFC
字号: 大大? 中中? 小小
1 Windows
WINDOWS 程序设计是一种完全不同于传统的DOS 方式的程序设计方法,它是一种事件驱动方式的程序设计模式。在程序提供给用户的界面中有许多可操作的可视对象。用户从所有可能的操作中任意选择,被选择的操作会产生某些特定的事件,这些事件发生后的结果是向程序中的某些对象发出消息,然后这些对象调用相应的消息处理函数来完成特定的操作。WINDOWS 应用程序最大的特点就是程序没有固定的流程,而只是针对某个事件的处理有特定的子流程,WINDOWS 应用程序就是由许多这样的子流程构成的。
从上面的讨论中可以看出,WINDOWS 应用程序在本质上是面向对象的。程序提供给用户界面的可视对象在程序的内部一般也是一个对象,用户对可视对象的操作通过事件驱动模式触发相应对象的可用方法。程序的运行过程就是用户的外部操作不断产生事件,这些事件又被相应的对象处理的过程。下面是WINDOWS 程序工作原理的示意图。
2 建立应用程序
在介绍AppWizard 的时候,我们已经建立了一个名字为TEST 的工程,事实上这个框
架程序已经可以编译运行了。在BUILD 菜单中选择REBUILD ALL 菜单项,系统开始编译由
APPWIZARD 自动生成的程序框架中所有文件中的源代码,并且链接生成可执行的应用程
序。在BUILD 菜单中选择EXECUTE 菜单项,应用程序就开始开始运行了,虽然我们没有编
写一行代码,但是可以看出由系统自动生成的应用程序的界面已经有了一个标准WINDOWS
应用程序所需的几个组成部分,我们要做的事情是往这个应用程序添加必要的代码以完成
我们所需要的功能。
接下来将要对WINDOWS 自动生成的这个应用程序框架作详细的介绍,让你对MFC 方式的
WINDOWS 应用程序的工作原理有全面的认识,只有这样你才会知道应该如何往程序框架当
中添加需要的代码。
3 程序结构剖析
为了让您对MFC 方式的程序的框架有一个总体的认识,这里设计了一个表示程序中的
主要类之间的关系的图表:
这个图表表示了使用MFC 方式的应用程序的四个主要类之间的关系,从中可以看出,CMYAPP 类主要的作用是用来处理消息的,它统一管理程序收到的所有的消息,然后把消息分配到相应的对象。CMAINFRAME 是CMYVIEW 的父类,也就是说视窗VIEW 显示在主框窗MAINFRAME 的客户区中。类CMYVIEW 的作用是显示数据,而数据的来源是类CMYDOC,在MFC 程序中,程序的数据是放在文档当中的,而显示数据则是利用视窗方式,文档与视窗分离带来的好处就是一个文档可以同时具有多个视窗,每个视窗只显示文档中的一部分数据,或者以特定的风格显示文档中的数据。文档与视窗分离的另一个好处就是在程序中可以处理多个文档,通过对不同的视窗的处理达到对不同的文档分别处理的目的。
使用过传统的WINDOWS 编程方法的人都知道,在应用程序中有一个重要的函数WINMAIN(),这个函数是应用程序的基础,用户的操作所产生的消息正是经过这个函数的处理派送到对应的对象中进行处理。在MFC 方式的WINDOWS 应用程序中,用来处理消息的是系统自动生成的MFC 中的类CWINAPP 的派生类CMYAPP,下面就从这个类开始介绍应用程序的框架。
3.1 类CMYAPP
类CMYAPP 是应用程序运行的基础,注意这一行代码,可以看出这个类是由MFC 中的类CWINAPP 派生来的。在这个类中除了有一般类都有的构造函数,一个重要的成员函数就是INITINSTANCE,我们知道,在WINDOWS 环境下面可以运行同一程序的多个实例,函数INITINSTANCE 的作用就是在生成的一个新的实例的时候,完成一些初始化的工作。注意这一行代码,它的作用就是生成一个CMYAPP 类型的对象,生成的时候系统会主动调用INITINSTANCE 函数完成一些必要的初始化工作。
下面研究INITINSTANCE 函数所做的事情,注意这一行代码,它定义了一个文档模板对象指针PDOCTEMPLATE,通过NEW 操作符,系统动态生成了这个文档模板对象,然后使用ADDDOCTEMPLATE 函数把这个文档模板对象加入到应用程序所维护的文档模板链表当中,这个文档模板PDOCTEMPLATE 的作用就是把程序用到的框架窗口,CMAINFRAME,文档CMYDOC,视窗CMYVIEW 与应用对象CMYAPP 联系起来。
CMYAPP 类提供了用户与WINDOWS 应用程序之间进行交流的界面。在生成这个类的对象
后,这个对象自动地把自身与WINDOWS 系统建立联系,接收WINDOWS 传送的消息,并
文档评论(0)