通过DECLARE_DYNCREATE宏来使用IMPLEMENT_DYNCREATE宏,以允许CObject派生类对象在运行时自动建立。主机使用此功能自动建立对象,例如,但它在串行化过程中从磁盘读去一个对象时,他在类工具里加入IMPLEMENT_DYNCREATE宏。若用户使用DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE宏,那么接着使用RUN
define DECLARE_DYNCREATE(class_name) \ DECLARE_DYNAMIC(class_name) \ static CObject* PASCAL CreateObject();就是说类里面有个CRuntimeClass结构(由DECLARE_DYNAMIC声明),这个CRuntimeClass是有个成员函数CreateObject()的。除了这个之外,类里面还有个直接的CreateObject())函数。创建对象似乎就是由这...
DECLARE_DYNCREATE( class_name ) #define DECLARE_DYNCREATE(class_name) //具有DYNAMIC支持 DECLARE_DYNAMIC(class_name) //对象建立支持 static CObject* PASCAL CreateObject(); IMPLEMENT_DYNCREATE(class_name, base_class_name): #define IMPLEMENT_DYNCREATE(class_name, base_class_name) //动态建立对象 COb...
1.DECLARE_DYNCREATE(CLASSNAME)宏. 2.定义一个不带参数的构造函数. 3.在类的实现文件中使用IMPLAMENT_DYNCREATE(CLASSNAME,BASECLASS)宏 使用时,先用RUNTIME_CLASS得到类的RUNTIME信息,再用CRuntimeClass的成员成员函数CreateObject创建一个该类的实例。
DECLARE_DYNCREATE(CxxView, CFormView)IMPLEMENT_DYNCREATE(CxxView, CFormView)添加以上声明和实现即可。特别注意:不是IMPLEMENT_DYNA...
5.DYNCREATE支持 类的实例动态生成支持 方法: 添加声明:DECLARE_DYNCREATE( class_name ) 添加实现:IMPLEMENT_DYNCREATE( class_name, base_class_name ) 原码分析: DECLARE_DYNCREATE( class_name ) #define DECLARE_DYNCREATE(class_name) //具有DYNAMIC支持 ...
DECLARE_DYNCREATE(CMyDocument) public: virtual ~CMyDocument(); #ifndef _WIN32_WCE virtual void Serialize(CArchive& ar); // overridden for document i/o #endif #ifdef _DEBUG virtual void AssertValid() const; #ifndef _WIN32_WCE virtual void Dump(CDumpContext& dc) const; ...
(1)从CObject派生这个类。然后在类的声明中使用宏DECLARE_DYNCREATE。该宏内部调用了前面我们用到的宏DECLARE_DYNAMIC(Class_name)。 (2)为这个类定义一个不带参数的构造函数(默认构造函数)。这是因为动态创建过程要使用这个构造函数进行初始化。 (3)在类的实现文件中使用IMPLEMENT_DYNCREATE宏。这个宏除了完成IMPLEME...
头文件 #pragma once #include <afxhtml.h> class CWebBrowser : public CHtmlView { DECLARE_DYNCREATE(CWebBrowser) DECLARE_MESSAGE_MAP() public: CWebBrowser(); virtual ~CWebBrowser(); BOOL IsContextMenuEnabled() const { return m_bContextMenuEnabled; } ...
virtual~CProgressBar(); BOOL Create(LPCTSTR strMessage,intnSize=100,intMaxValue=100, BOOL bSmooth=FALSE,intnPane=0); //DECLARE_DYNCREATE(CProgressBar) //Attributes public: BOOL SetRange(intnLower,intnUpper,intnStep=1); BOOL SetText(LPCTSTR strMessage); ...