visual c++ 常用的mfc CRuntimeClass结构             
visual c++ 常用的mfc CRuntimeClass结构
在许多计算机书籍中,CRuntimeClass被称为类,实际上,CRuntimeClass在MFC中是以结构的方式定义的,虽然它也包含成员函数。这个结构定义在Afx.h中,它包含了使用CRuntimeClass结构的类的有关信息。
CRuntimeClass结构的原型如下:
                         struct CRuntimeClass
            {
            LPCSTR m_lpszClassName;
            int m_nObjectSize;
            UINT m_wSchema; // schema number of the loaded class
            CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class
            #ifdef _AFXDLL
            CRuntimeClass* (PASCAL* m_pfnGetBaseClass)();
            #else
            CRuntimeClass* m_pBaseClass;
            #endif
            // Operations
            CObject* CreateObject();
            BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;
            // Implementation
            void Store(CArchive& ar) const;
            static CRuntimeClass* PASCAL Load(CArchive& ar, UINT* pwSchemaNum);
            // CRuntimeClass objects linked together in simple list
            CRuntimeClass* m_pNextClass;       // linked list of registered classes
            };            在CRuntimeClass结构中定义了类名、对象所占存储空间的大小、类的版本号等成员变量及动态创建对象、派生关系判断等成员函数。
CRuntimeClass结构在MFC中有着至关重要的作用,要继承CObject类的功能离不开CRuntimeClass结构,每个从CObject类派生的类都有一个CRuntimeClass结构同它关联,以便完成在运行时得到对象的信息或其基类的信息。
要使用CRuntimeCalss结构,必须结合使用RUNTIME_CLASS()宏和其他有关运行时类型识别的MFC宏。