Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14490669
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:52:01

下载本文示例代码
  框窗、视图和文档及其关系   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讲坛的前言(五)
阅读(68) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~