- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文档类、子框架类及视图类的关系及如何相互调用
文档类、子框架类及视图类的关系及如何相互调用 收藏 了解文档和视图的相互作用关系是编写mfc程序的基本功。但是mfc的应用程序框架把文档和视图之间的关系封装了起来,初学的朋友往往不得要领,因此写程序往往被局限于在用向导生成的框架中。本文希望能够尽可能说明白文档视图框架之间是如何进行作用,希望能给一些朋友带来小小的帮助。 ??几个概念: ??(虽然大家都知道了,雷神还是要重申一次) ??文档对象:是用来保存数据的。 ??视图对象:是用来显示和编辑数据的。 ??应用程序框架:框架是用来管理不同文档显示界面的。例如你有一个数据网格显示界面,还有一个图形显示界面,它们的数据可能都来自你的文档,但是视图不同,怎么办用框架。为什么不用视图?为的是把界面管理独立的拿出来。 ??文档模板:mfc把文档/视图/框架视为一体,只要你创建文档/视图框架结构的程序,必定会为你创建这三个类。这个工作在在应用程序初始化时完成,如下: ??????bool cmyhtmlapp::initinstance() ??{ ??//。。。。。。 ??csingledoctemplate* pdoctemplate; ??pdoctemplate = new csingledoctemplate( ??idr_mainframe, ??runtime_class(cmyhtmldoc), ??runtime_class(cmainframe), // main sdi frame window ??runtime_class(cmyhtmlview)); ??adddoctemplate(pdoctemplate); ??//。。。。。。 ??} ??????单文档:就是一次只能打开一个文件,和你的文档类型支持的多少无关。你完全可以做一个单文档的支持所有图象格式的程序,只不过它一次只能打开一个文档罢了。 ??多文档:就是你可以打开多个文件,和文档类型也无关。你也可以作一个可以同时打开多个文档的程序,但它只支持一种文档类型。 ??????何时需要文档/视图框架结构? ??首先你可以不使用文档视图这种框架结构,即便是在mfc中。你可以在你需要的时候选择使用这种方式。你可以完成一个只有视图没有文档的程序,例如一个基于对话框的应用。 ??哪什么时候需要呢? ??当你想将你的数据层和界面层分开的时候。 ??通常我们对数据的操作放在文档类中,例如存取,打开,关闭。在这里你可以尽情的对你的数据进行操作,假如你需要,在对数据进行了改变后,对视图做一下更新,那么程序会将你对数据所做的改变呈现给你的程序的用户。由此可见视图的作用就是提供一个用户和数据之间进行数据交换的界面,它的作用就是在需要的时候显示数据,并在需要的时候提供输入界面。当用户输入后实际的数据操作工作是由文档类来做的。那框架类有在做什么呢? ??框架类是为了便于管理你的文档类和视图类而存在的。通常我们的操作都是通过视图窗口完成,消息由视图进行接收并且进行处理。所以消息映射定义一般在视图中。但假如一个应用同时拥有多个视图而当前活动视图没有对消息进行处理则消息会发往框架窗口。另外框架窗口可以方便的处理非窗口消息。 ??????再来说一边典型的单文档程序的生成过程(不完整,只挑有用的) ??1、 cwinapp对象被建立,这个对象是全局的且只能有一个,名字叫theapp。这时你可以完成一些工作,例如对注册表的操作,(假如你想写一个不修改注册表的软件,需要在这里做写工作) ??2、 在initinstance()函数中创建文档模板,文档模板以cruntimclass静态成员指针做构造参数。 ??3、 执行mfc框架默认的命令行参数。命令行参数有很多其中之一是,cmd1它会创建一个新文件。(假如没有命令行参数则执行默认的id_file_new) ??4、 文档模板的实例根据三个类的动态创建信息创建出文档、视图、框架。 ??5、 对文档、视图、框架进行初始化。 ??????我们对文档,视图,框架如何产生以及他们的用途有了一定的了解,如何有效的使用它们呢。 ??????文档,视图,框架之间的相互作用。 ??由上面的典型的单文档程序的生成过程可以看出一个完整的应用一般由四个类组成:cwinapp应用类,cframewnd框架类,cdocument文档类,cview视图类。我将四个类常用的成员函数列出,大家一看便知。不过参数,返回值均未列出,大家可以从msdn上了解更多。几个重要的虚函数也未做说明。大家自己看吧。 ??????通过全局函数afxgetapp可以得到cwinapp应用类的全局对象theapp. ??cwinapp ??数据成员: ?
您可能关注的文档
- 惯性系与非惯性系.ppt
- 惯性释放法在结构耐撞性拓扑优化中的应用和改进阎琨.pdf
- 意外医疗A.pdf
- 惯性测量技术及导航.ppt
- 感知价值表达方式引起的比率认知偏差.pdf
- 感觉和知觉在广告中的应用.ppt
- 慧鱼常见传感器使用说明.ppt
- 成为领导的条件.ppt
- 成品片烟质量标准.ppt
- 惯性组合导航系统设计与分析.pdf
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)