Программирование на языке 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

};

Похожие статьи: ,