一、说明
DECLARE_DYNCREATE( class_name)和
IMPLEMENT_DYNCREATE(class_name,base_class_name)成对使用
参数:class_name 是派生类的实际名字。
参数:base_class_name 是基类的实际名字。
二、作用
使用DECLARE_DYNCREATE宏可以使每个CObject的派生类的对象具有运行时动态创建的能力。框架利用这种能力来动态创建对象,例如,当它在串行化过程中从磁盘读取对象的时候。文档、视图和框架类必须支持动态创建,因为框架需要动态地创建它们。
在类的 *.h 模块中加入DECLARE_DYNCREATE宏,然后在每个需要访问这个类的对象的.CPP模块中包含这个模块。
如果在类声明中包含了DECLARE_DYNCREATE,那么必须在类的实现中包含IMPLEMENT_DYNCREATE宏。即动态创建声明和动态创建实现。
补充:
通过DECLARE_DYNCREATE宏来使用IMPLEMENT_DYNCREATE宏,以允许CObject派生类对象在运行时自动建立。主机使用此功能自动建立对象,例如,当它在串行化过程中从磁盘读取一个对象时,它在类工具里加入IMPLEMENT_DYNCREATE宏。
若用户使用DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE宏,那么接着使用RUNTIME_CLASS宏和CObject::IsKindOf成员函数以在运行时确定对象类。若declare_dyncreate包含在定义中,那么IMPLEMENT_DYNCREATE必须包含在类工具中。