一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

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;

 

RUNTIME_CLASS的本质,就是获取该类的类型为CruntTimeClass的成员变量

((CRuntimeClass*)(&class_name::class##class_name))

posted on 2021-08-18 12:13  一杯清酒邀明月  阅读(202)  评论(0编辑  收藏  举报