在MFC(Microsoft Foundation Classes)中,DECLARE_DYNCREATE和運行時類型識別(DECLARE_RUNTIME_CLASS)是用于支持動態創建和運行時類型識別的宏。
#define DECLARE_DYNCREATE(class_name) \
static CRuntimeClass* PASCAL class_name::GetThisClass(); \
virtual CRuntimeClass* GetRuntimeClass() const;
這個宏需要在類的聲明中使用。它會自動生成一個靜態成員函數GetThisClass()和一個虛函數GetRuntimeClass()。GetThisClass()函數返回類的運行時類對象(CRuntimeClass),GetRuntimeClass()函數返回當前對象的運行時類對象。
#define DECLARE_RUNTIME_CLASS(class_name) \
static char _lpszThisClass[]; \
virtual CRuntimeClass* GetRuntimeClass() const;
這個宏需要在類的實現中使用。它會自動生成一個靜態字符數組_lpszThisClass[]和一個虛函數GetRuntimeClass(),用于返回當前對象的運行時類對象。
這兩個宏的作用是為了支持動態創建和運行時類型識別,使得 MFC 在運行時能夠根據類的類型動態創建對象,并根據對象的類型確定其運行時類對象。這樣,就能夠方便地進行對象的創建和類型判斷。