手写MFC----第一节DECLARE_DYNCREATE(mydoc)[转载]

DECLARE_DYNCREATE(mydoc)
定义为
#define DECLARE_DYNCREATE(class_name) /
         DECLARE_DYNAMIC(class_name) /
         static CObject* PASCAL CreateObject();
等同于
 DECLARE_DYNAMIC(mydoc) /
         static CObject* PASCAL CreateObject();
DECLARE_DYNAMIC 又是什么呢?
定义为:
#define DECLARE_DYNAMIC(class_name) /
public : /
         static const AFX_DATA CRuntimeClass class## class_name; /
         virtual CRuntimeClass* GetRuntimeClass() const ; /
 
那么
 
 
DECLARE_DYNAMIC(mydoc) /
         static CObject* PASCAL CreateObject();
等同于
public : /
         static const AFX_DATA CRuntimeClass class## mydoc; /
         virtual CRuntimeClass* GetRuntimeClass() const ; /
static CObject* PASCAL CreateObject();
然后,再根据
#define PASCAL      __stdcall
#define AFX_CORE_DATA
#define AFX_DATA AFX_CORE_DATA
说明 AFX_DATA 啥也不是
##  为连接字符
等同于
public : /
         static const CRuntimeClass   class mydoc; /
         virtual CRuntimeClass* GetRuntimeClass() const ; /
static CObject*  __stdcall  CreateObject();
然后,再根据
struct CRuntimeClass
{
// Attributes
         LPCSTR m_lpszClassName;
         int m_nObjectSize;
         UINT m_wSchema; // schema number of the loaded class
         CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class
#ifdef _AFXDLL
         CRuntimeClass* (PASCAL* m_pfnGetBaseClass)();
#else
         CRuntimeClass* m_pBaseClass;
#endif
 
// Operations
         CObject* CreateObject();
         BOOL IsDerivedFrom( const CRuntimeClass* pBaseClass) const ;
 
// Implementation
         void Store(CArchive& ar) const ;
         static CRuntimeClass* PASCAL Load(CArchive& ar, UINT* pwSchemaNum);
 
         // CRuntimeClass objects linked together in simple list
         CRuntimeClass* m_pNextClass;       // linked list of registered classes
};
说明 CruntimeClass 是个结构
DECLARE_DYNCREATE(mydoc)
就等同于
public : /
         static const CRuntimeClass   class mydoc; /
         virtual CRuntimeClass* GetRuntimeClass() const ; /
static CObject*  __stdcall  CreateObject();
定义了三个内容,都是公有的成员,一个静态结构,两个函数。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值