MFC 常用类说明

一、CRect类

    CRect类与Windows RECT结构相似,并且还包括操作CRect对象和Windows RECT结构的成员函数。
  在传递LPRECT,LPCRECT或RECT结构作为参数的任何地方,都可以传递CRect对象来代替。
  注意:这个类是从tagRECT结构派生而来的。(tagRECT是RECT结构的不太常用的别名。)这意味着RECT结构的数据成员(left,top,right,和bottom)也是CRect的可访问数据成员。
  一个CRect包含用于定义矩形的左上角和右下角点的成员变量。
  当指定一个CRect时,必须谨慎地构造它,以使它符合规范——也就是说,使其左坐标值小于右 坐标值,使顶坐标值小于底坐标值。例如,左上角为(10,10),右下角为(20,20)就定义了一个符合规范的矩形,但是左上角为(20,20)而右下 角为(10,10)的值就定义了一个不符合规范的矩形。如果矩形是不符合规范的,则CRect的许多成员函数都会符合不正确的结果。

 

二、CSize类

CSize类
  类CSize是对Windows结构SIZE的封装,凡是能用SIZE结构的地方都可以用CSize代替。
  结构SIZE表示一个矩形的长度和宽度,其定义为:
  typedef struct tagSIZE{
  LONG cx;
  LONG cy;
  } SIZE;
  其中 cx、cy分别是长度和宽度。
  与CPoint类似,CSize也提供了一些重载运算符。如运算符“+”,“-”,“+=”和“-=”,用于两个CSize对象或一个CSize对象与一个CPoint对象的加减运算,运算符“==”和“!=”用于比较两个CSize对象是否相等。
  由于CPoint和CSize都包含两个整数类型的成员变量,他们可以进行相互操作。 CPoint对象的操作可以以CSize对象为参数。同样,CSize对象的操作也可以以CPoint对象为参数。如可以用一个CPoint对象构造一个 CSize对象,也可以用一个CSize对象构造一个CPoint对象,允许一个CPoint对象和一个CSize对象进行加减运算。 

 

三、CCreateContext类

CCreateContext没有基类。
  在主程序创建框架窗口、以及文档相关的视图时,会使用CCreateContext结构。建立窗口时,此结构中的值用于连接构成文档的组件和文档数据的视图。仅当覆盖了创建过程时才需要使用CCreateContext。
  CCreateContext结构包含了指向文档、框架窗口和文档模板的指针,包括了一个 CRuntimeClass指针,CRuntimeClass标志了待创建的视图的类型。运行时类信息和当前文档指针用于动态地创建视图。下表列出了 CCreateContext的每个成员的用法:

成员用途
m_pNewViewClass待创建的视图的CRuntimeClass
m_pCurrentDoc将在其上创建视图的文档
m_pNewDocTemplate待创建的新MDI框架窗口的文档模板
m_pLastView待创建视图所依据的原始视图,例如在创建分裂窗口的视图或文档的第二个框架窗口时
m_pCurrentFrame待创建框架窗口所依据的框架窗口,例如在文档上创建第二个框架窗口时

  当在文档模板上创建一个文档及其相关的组件时,它检查存储在CCreateContext结构中的信息的有效性。例如,不能在一个不存在的文档上建立视图。
  注意:
  CCreateContext结构中的所有指针都是可选的,在不需要或者未知时可设为NULL。
  “请参阅”部分列出的函数会用到CCreateContext结构。在覆盖这些函数之前,最好看以下对它们的详细说明。
  以下是一些通用的指导原则:
·CCreateContext 作为创建窗口时的参数,如CWnd::Create、CFrameWnd:Create和 CFrameWnd::LoadFrame,CCreateContext指定了新窗口应连接到的地方。对多数窗口来说,整个结构都是可选的,可传递一个 NULL指针。
·对于可覆盖的函数,例如CFrameWnd::OnCreateClient,参数CCreateContext也是可选的。
·对那些在创建视图时使用的函数来说,必须在调用时提供足够的信息以建立视图。例如,对分裂窗口中的第一个视图,必须提供视图的类信息和当前的文档。
一般说来,如果使用了框架的缺省设置,就可以忽略CCreateContext结构。如果想进行一些高级的修改,MFC类库源代码或例子程序(如VIEWEX)可以提供参考。如果记不清参数的使用,框架中提供的断言将有助于发现参数使用的错误。

 

posted @ 2009-12-13 16:32  pjh123  阅读(410)  评论(0)    收藏  举报