Hope you know about MFC dynamic object creation and how to use it.
I assume you just want to know what actually happens when we write IMPLEMENT_DYNCREATE.
Normally we code to use dynamic object creation facility as below
class A : public CObject
{
DECLARE_DYNCREATE( A )
};
IMPLEMENT_DYNCREATE( A, CObject )
During run time these gets expanded and become as shown below. This is just a simulation to understand the concept behind it
In class Declaration (.h)
class A : public CObject
{
static CObject* PASCAL CreateObject();
protected:
static CRuntimeClass* PASCAL _GetBaseClass();
public:
static const AFX_DATA CRuntimeClass classA;
virtual CRuntimeClass* GetRuntimeClass() const;
};
A::classA.m_lpszClassName = "A";
A::classA.m_nObjectSize = sizeof( A );
A::classA.m_wSchema = 0xFFFF;
A::classA.m_pfnCreateObject = A::CreateObject;
A::classA.m_pfnGetBaseClass =A:: _GetBaseClass;
A::m_pNextClass = NULL;
CObject* PASCAL A::CreateObject()
{
return new A;
}
CRuntimeClass* A::GetRuntimeClass() const
{
return RUNTIME_CLASS( A );
}
CRuntimeClass* PASCAL A::_GetBaseClass()
{
return RUNTIME_CLASS(CObject);
}
to understand more see what is CRuntimeClass(), RUNTIME_CLASS etc in msdn