天天看點

DECLARE_DYNCREATE與DECLARE_DYNAMIC差別

DECLARE_DYNAMIC 表示可以運作時識别該類

DECLARE_DYNCREATE 包含了DECLARE_DYNAMIC的功能,并且可以在運作過程中動态建立對象。如果需要動态建立類對象,需要使用這個宏定義。

DECLARE_DYNCREAT定義如下:

#define DECLARE_DYNCREATE(class_name) \

DECLARE_DYNAMIC(class_name)\

static CObject* PASCALCreateObject();(這一句就是DECLARE_DYNCREATE多出來的一句)

這裡是DECLARE_DYNAMIC聲明的(本質上就是聲明了一個CruntimClass,并且提供了一個可以擷取CruntimeClass的函數)

DECLARE_DYNAMIC(class_name)

public:

staticconst CRuntimeClassclass##class_name;

virtual CRuntimeClass* GetRuntimeClass()const;