下载本文示例代码
框窗、视图和文档及其关系 MFC架构的另外一个特色是它的框窗、视图和文档这个三位一体的结构,它是一个典型的MVC(Model、View and Controler)结构。严格的讲,框窗不属于MVC中的任何一项,MFC设计者将框窗加进来是为了能更好的协调文档 和视图。而MVC中的Controler这一项,则是应用本身的应用逻辑。 在这三者中,需要特别注意的、也最能够体现个人的编程水平的是框窗。一旦三者都存在于内存中,它们的关系就变得很简单。本章将讨论下述内容: 1.MFC的RTTI(Run Time Type Inspection,运行时类型检查) 框窗、视图和文档的创建顺序和过程。 框窗、视图和文档的删除顺序和过程。 框窗、视图和文档之间的相互访问接口。 框窗、视图和文档对菜单和工具条消息处理的先后顺序 MFC的RTTI C 设计者在C 使用的早期并没有意识到RTTI(运行时类型检查)的重要性,后来随作框架结构的类库出现及其应用越来越广泛,RTTI就变得越来越重要了。例如下面的这个语句: CWnd *pWnd;任何人都知道对象pWnd是CWnd类型的指针。但是如果有一个类CView是从CWnd派生来的,对于下面的语句: CWnd* CreateView() { return new CView; }对于使用CreateView()的用户而然,pWnd = CreateView(),他如何确定pWnd所指向的对象的真正类型呢?因此,必须有一个能够在运行时刻就能够确定指针对象类型的方法,比如给每一个类型的对象均添加一个IsKindOf()之类的方法,通过此方法判断指针对象的类型。 后来,RTTI被加入了C 的规范,成为C 一个内置的特性。 在MFC的设计者们设计MFC的时候,C 规范中并没有包含RTTI,但是他们很早就意识到这个问题,所以他们以一种独特的方式在MFC中实现RTTI,采用这种方式实现的RTTI对于某个对象而言并不是必须的,也就是说,MFC的设计者们并不将RTTI强加于用户所设计的类型上,而是让用户根据自己的需要选择是否他所设计的类型需要RTTI。因而这种方式比C 规范中内置的RTTI更灵活。 MFC的设计者们在MFC中采用下面的的方法来实现RTTI: 设计一个基类CObject,在CObject中增加RTTI功能,任何一个类型,如果需要具有RTTI功能,就必须直接或间接派生于CObject采用宏实现RTTI,对于某个直接或间接从CObject派生来的类型而言,该宏可有可无,如果有该宏,它就具有RTTI功能,反之则无。共3页。 1 2 3 8 :
框窗、视图和文档及其关系 MFC架构的另外一个特色是它的框窗、视图和文档这个三位一体的结构,它是一个典型的MVC(Model、View and Controler)结构。严格的讲,框窗不属于MVC中的任何一项,MFC设计者将框窗加进来是为了能更好的协调文档 和视图。而MVC中的Controler这一项,则是应用本身的应用逻辑。 在这三者中,需要特别注意的、也最能够体现个人的编程水平的是框窗。一旦三者都存在于内存中,它们的关系就变得很简单。本章将讨论下述内容: 1.MFC的RTTI(Run Time Type Inspection,运行时类型检查) 框窗、视图和文档的创建顺序和过程。 框窗、视图和文档的删除顺序和过程。 框窗、视图和文档之间的相互访问接口。 框窗、视图和文档对菜单和工具条消息处理的先后顺序 MFC的RTTI C 设计者在C 使用的早期并没有意识到RTTI(运行时类型检查)的重要性,后来随作框架结构的类库出现及其应用越来越广泛,RTTI就变得越来越重要了。例如下面的这个语句: CWnd *pWnd;任何人都知道对象pWnd是CWnd类型的指针。但是如果有一个类CView是从CWnd派生来的,对于下面的语句: CWnd* CreateView() { return new CView; }对于使用CreateView()的用户而然,pWnd = CreateView(),他如何确定pWnd所指向的对象的真正类型呢?因此,必须有一个能够在运行时刻就能够确定指针对象类型的方法,比如给每一个类型的对象均添加一个IsKindOf()之类的方法,通过此方法判断指针对象的类型。 后来,RTTI被加入了C 的规范,成为C 一个内置的特性。 在MFC的设计者们设计MFC的时候,C 规范中并没有包含RTTI,但是他们很早就意识到这个问题,所以他们以一种独特的方式在MFC中实现RTTI,采用这种方式实现的RTTI对于某个对象而言并不是必须的,也就是说,MFC的设计者们并不将RTTI强加于用户所设计的类型上,而是让用户根据自己的需要选择是否他所设计的类型需要RTTI。因而这种方式比C 规范中内置的RTTI更灵活。 MFC的设计者们在MFC中采用下面的的方法来实现RTTI: 设计一个基类CObject,在CObject中增加RTTI功能,任何一个类型,如果需要具有RTTI功能,就必须直接或间接派生于CObject采用宏实现RTTI,对于某个直接或间接从CObject派生来的类型而言,该宏可有可无,如果有该宏,它就具有RTTI功能,反之则无。共3页。 1 2 3 8 :
下载本文示例代码
进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)进入MFC讲坛的前言(五)