DECLARE_DYNAMIC : 对应得类可以用RUNTIME_CLASS宏得到一个CRuntimeClass结构,可以用IsKindof判断其类型,类似于typeof
DECLARE_DYNCREATE:表示这个类可以用上面那个CRuntimeClass创建自身,
CRuntimeClass * pClass = RUNTIME_CLASS(CMyClass);
CMyClass * pObj = (CMyClass*)(pClass-> CreateObject());
DECLARE_SERIAL: 这个类可以动态创建,也可以序列化到文件。该类必须实现void Serialize(CArchive & ar)函数,用于序列化
mfc的三个宏
DECLARE_DYNAMIC 支持RTTI
DECLARE_DYNCREATE 支持RTTI 类动态创建
DECLARE_SERIAL 支持RTTI 类动态创建 及序列化
MFC的动态对象创建机制是应用程序用来注册类的一种方式。在这种方式下,主结构能够创造这些类对象。
1、与new的区别
回避了一个C++语句的缺点:CString strClassName = _T("MyClass");
CMyClass* ptr = new strClassName ;
error:编译器
2.如何使用?
DECLARE_DYNCREATE(CMainFrame)
IMPLEMENT_DYNCREATE(CMainFrame, CBCGPFrameWnd)
RUNTIME_CLASS(CVREditorDoc)->CreateObject();