

Программирование на языке MFC
Мой второй блог в серии программирования
Информация времени выполнения
Однако я не могу считать раскрытой до конца тему о написании программ для MFC. Дело в том, что в исходных кодах MFC на каждом шагу попадаются макросы с именами DECLARE_DYNAMIC(), IMPLEMENTJDYNAMfCO, DECLARE_DYNCREATE() и IMPLEMENT-_DYNCREATE(). О них-то мы сейчас и поговорим.
У каждого объекта, унаследованного от объекта класса СОЬ-ject, есть поле, содержащее в себе информацию времени выполнения. Эта информация представляет собой структуру типа CRunt-imeClass, которая описана в файле следующим образом:
struct CRuntimeClass {
// Attributes
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
};
Похожие статьи: Load, Информация времени выполнения
