欢迎来到天天文库
浏览记录
ID:34772904
大小:562.63 KB
页数:42页
时间:2019-03-10
《文档视图架构编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、MFC文档/视图架构编程理解了MFC文档视图类的意义及它们纵横交错的关系也就理解了“文档/视图”结构的基本概念,在此基础上,我们再进一步研究“文档/视图”结构的MFC程序消息流动的方向,这样就完全彻底明白了基于"文档/视图"结构MFC程序的“生死因果”。“文档/视图”结构是MFC中结构最为复杂,体系最为庞大,而又最富有特色的部分,其中涉及到应用、文档模板、文档、视图、SDI窗口、MDI框架窗口、MDI子窗口等多种不同的类,如果不了解这些类及其盘根错节的内部联系的话,就不可能编写出高水平的文档/视图程序。 学习"文档/视图"结构
2、的意义还不只于其本身,通过该架构的学习,一步步领略MFC设计者的神功奥妙,也将进一步增强我们自身对庞大程序框架的把握能力。 一个优秀的程序员是可以写出一个个优秀函数的程序员,而一个优秀的系统设计师则需从全局把握软件的架构,分析和学习"文档/视图"结构将是我们成为软件系统设计师之旅的一个重要阶段。第一讲基本概念 MFC引入了"文档/视图"结构的概念,理解这个结构是编写基于MFC编写复杂VisualC++程序的关键。MFC"文档/视图"结构被认为是一种架构,关于什么是架构,这是个"仁者见仁,智者见智"的问题。引言 MFC引入了
3、"文档/视图"结构的概念,理解这个结构是编写基于MFC编写复杂VisualC++程序的关键。"文档/视图"中主要涉及到四种类: (1)文档模板:classCDocTemplate;//templatefordocumentcreationclassCSingleDocTemplate;//SDIsupportclassCMultiDocTemplate;//MDIsupport (2)文档:classCDocument;//maindocumentabstraction (3)视图://viewsonadocumentcl
4、assCView;//aviewonadocumentclassCScrollView;//ascrollingview (4)框架窗口://framewindowsclassCFrameWnd;//standardSDIframeclassCMDIFrameWnd;//standardMDIframeclassCMDIChildWnd;//standardMDIchildclassCMiniFrameWnd;//half-heightcaptionframewnd 理解了这4个类各自的意义及它们纵横交错的关系也就理解了"文
5、档/视图"结构的基本概念,在此基础上,我们还需要进一步研究"文档/视图"结构的MFC程序消息流动的方向,这样就完全彻底明白了基于"文档/视图"结构MFC程序的"生死因果"。 出于以上考虑,本文这样组织了各次连载的内容: 第1次连载进行基本概念的介绍,第2~5次连载分别讲述文档模板、文档、视图和框架窗口四个类的功能和主要函数,连载6则综合阐述四个类之间的关系,接着以连载7讲解消息流动的方向,最后的连载8则以实例剖析连载1~7所讲述的所有内容。 本文所有的代码基于WIN32平台开发,调试环境为VisualC++6.0。在本文的
6、连载过程中,您可以通过如下方式联系作者(热忱欢迎读者朋友对本文的内容提出质疑或给出修改意见): 作者email:21cnbao@21cn.com(可以来信提问,笔者将力求予以回信解答); 另外,对本文的转载请务必注明作者和出处。未经同意,不得用于任何形式的商业目的。 架构 MFC"文档/视图"结构被认为是一种架构,关于什么是架构,这是个"仁者见仁,智者见智"的问题。在笔者看来,成其为架构者,必具备如下两个特性: (1)它是一种基础性平台,是一个模型。通过这个平台、这个模型,我们在上面进一步修饰,可以得到无穷无尽的新事物
7、。譬如,建筑学上的钢筋混凝土结构、ISO(国际标准化组织)的OSI(开放式系统互连)七层模型。架构只是一种基础性平台,不同于用这个架构造出的实例。钢筋混凝土结构是架构,而用钢筋混凝土结构造出的房子就不能称为架构。 这个特性强调了架构的外部特征,即架构具有可学习、可再生、可实例化的特点,是所有基于该架构所构造实例的共性,是贯串在它们体内的一根"筋",但各个基于该架构所构造的实例彼此是存在差异的。 (2)它是一个由内部有联系的事物所组成的一个有机整体。架构中的内部成员不是彼此松散的,并非各自"占山为王",它们歃血为盟,紧密合作,
8、彼此都有明确的责任和分工,因此共同构筑了一个统一的基础性平台、一个统一的模型。譬如,OSI模型从物理层到应用层进行了良好的合作,虽然内部包含了复杂的多个层次,但仍然脉络清晰。 由此可见,架构的第2个特性是服务于第1个特性的。理解架构,关键是理解以上两个特性。而
此文档下载收益归作者所有