WEB开发网
开发学院软件开发VC MFC教程(3)-- CObject类 阅读

MFC教程(3)-- CObject类

 2010-03-25 20:33:52 来源:WEB开发网   
核心提示:CruntimeClass类的结构与功能从上面的讨论可以看出,在对CObject特性的支持上,MFC教程(3)-- CObject类(6),CRuntimeClass类起到了关键作用,下面,下面,分析三个宏对CObject及其派生类的CRuntimeClass类型的成员变量class##class_name初始化的情况

CruntimeClass类的结构与功能

从上面的讨论可以看出,在对CObject特性的支持上,CRuntimeClass类起到了关键作用。下面,考查它的结构和功能。

CRuntimeClass的结构

CruntimeClass的结构如下:

Struct CRuntimeClass

{

LPCSTR m_lpszClassName;//类的名字

int m_nObjectSize;//类的大小

UINT m_wSchema;

CObject* (PASCAL* m_pfnCreateObject)();

//pointer to function, equal to newclass.CreateObject()

//after IMPLEMENT

CRuntimeClass* (PASCAL* m_pfnGetBaseClass)();

CRumtieClass* m_pBaseClass;

//operator:

CObject *CreateObject();

BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;

...

}

CRuntimeClass成员变量中有两个是函数指针,还有几个用来保存所在CruntimeClass对象所在类的名字、类的大小(字节数)等。

这些成员变量被三个实现宏初始化,例如:

m_pfnCreateObject,将被初始化指向所在类的静态成员函数CreateObject。CreateObject函数在初始化时由实现宏定义,见上文的说明。

m_pfnGetBaseClass,如果定义了_AFXDLL,则该变量将被初始化指向所在类的成员函数_GetBaseClass。_GetBaseClass在声明宏中声明,在初始化时由实现宏定义,见上文的说明。

下面,分析三个宏对CObject及其派生类的CRuntimeClass类型的成员变量class##class_name初始化的情况,然后讨论CRuntimeClass成员函数的实现。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:MFC 教程 CObject

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接