DECLARE_DYNCREATE(class_name)的具体作用
首先还是看msdn的解释和这个语句的定义:
msdn的解释:
启用 CObject对象 --将动态创建的派生类在运行时。
DECLARE_DYNCREATE(class_name )
框架使用此功能动态创建新的对象。 例如,创建的新视图,当您打开新文档。 文档,查看,并且,框架类应支持动态创建,因为框架需要动态创建它们。
添加在 .h 模块的 DECLARE_DYNCREATE 宏类的,然后包括该模块在需要访问此类对象的任何 .cpp 模块。
如果 DECLARE_DYNCREATE 在类声明中,则类实现必须包含 IMPLEMENT_DYNCREATE 。
#define DECLARE_DYNCREATE(class_name)
通过上面的解释:大致理解是使用这个DECLARE_DYNCREATE(class_name)可以使每个CObject的对象在运行的时候具备动态创建的能力。框架利用这种能力来创建对象,例如当它从磁盘读取一系列对象的时候,很多对象都需要动态的去创建。
msdn中解释道:在类的.H模块中加入DECLARE_DYNCREATE宏,然后在每个需要访问这个类的对象的.CPP模块中包含这个模块。
如果在类声明中包含了DECLARE_DYNCREATE,那么必须在类的实现中包含IMPLEMENT_DYNCREATE宏。
一句话概括:就是为了是cobject的对象在运行的时候具备动态创建的能力,如果在类声明加入了这句,在类的实现中必有有对应的IMPLEMENT_DYNCREATE宏,发现frm、view、doc的类的实现里均有对应的IMPLEMENT_DYNCREATE宏