您现在的位置是: 软件 > 开发者网络 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

进入MFC讲坛的前言(五)
2001-02-02· ·毛守焱··vchelp

1 2 3  下一页


  框窗、视图和文档及其关系


  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功能,反之则无。

1 2 3  下一页

■ 相关内容
 进入MFC讲坛的前言(二)
 进入MFC讲坛的前言(一)
 进入MFC讲坛的前言(五)
 进入MFC讲坛的前言(四)
 进入MFC讲坛的前言(三)
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!