目录
MFC 动态创建机制是 MFC 中的一项重要功能,它允许开发者在运行时动态创建和管理窗口控件。通过动态创建机制,开发者可以根据需要在程序运行过程中创建、显示和销毁窗口,而不需要在设计时提前创建好所有的窗口控件。
如何使用动态创建机制?
把宏展开
DECLARE_DYNCREATE( CDog )
展开为:
public:
static const CRuntimeClass classCDog;
virtual CRuntimeClass* GetRuntimeClass() const;
static CObject* PASCAL CreateObject();
IMPLEMENT_DYNCREATE( CDog, CAnimal )
展开为,CRuntimeClass 结构体的第四个属性有了值,是类成员函数 CreateObject() 函数地址
CObject* PASCAL CDog::CreateObject()
{
return new CDog;
}
AFX_COMDAT const CRuntimeClass CDog::classCDog = {
"CDog",
sizeof(class CDog),
0xFFFF,
CDog::CreateObject,
RUNTIME_CLASS(CAnimal),
NULL,
NULL
};
CRuntimeClass* CDog::GetRuntimeClass() const
{
return RUNTIME_CLASS(CDog);
}
获取CDog类结构体成员变量的地址,并调用CreateObject函数,这个不等同于类的成员函数,而是属于结构体的
m_pfnCreateObject 是一个函数地址,是结构体CRuntimeClass的第四个属性 ,所以本质是调用的宏展开的CreateObject函数
返回值为CDog的对象