范例6中为什么不能动态创建CView等类??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
CRuntimeClass* m_pBaseClass; CObject* CreateObject();
static CRuntimeClass* PASCAL Load(); // CRuntimeClass objects linked together in simple list
static CRuntimeClass* pFirstClass; // start of class list
CRuntimeClass* m_pNextClass; // linked list of registered classes
};这个结构中的m_pfnCreateObject是什么意思?
它什么是NULL?什么时候又不是??
{
// Attributes
LPCSTR m_lpszClassName;
int m_nObjectSize;
UINT m_wSchema; // schema number of the loaded class
CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class
CRuntimeClass* m_pBaseClass; CObject* CreateObject();
static CRuntimeClass* PASCAL Load(); // CRuntimeClass objects linked together in simple list
static CRuntimeClass* pFirstClass; // start of class list
CRuntimeClass* m_pNextClass; // linked list of registered classes
};这个结构中的m_pfnCreateObject是什么意思?
它什么是NULL?什么时候又不是??
or DECLARE_SERIAL: CView.CView明明已经DECLARE_DYNAMIC(CView)
上面这个是保存下面这个函数的地址的,是一个函数打针。
下面这个是一个采用了Factory Method模式的函数 CObject* CreateObject();
Error: Trying to create object which is not DECLARE_DYNCREATE
or DECLARE_SERIAL: CView.CView明明已经DECLARE_DYNAMIC(CView)
----
DECLARE_DYNCREATE
DECLARE_SERIAL
DECLARE_DYNAMIC
以上这三个是不同的。看不懂的话就把第三章多看几遍吧,是全书的精华也是基础部分。
它指向了CObject* CreateObject();但是为什么CView没有CObject* CreateObject()?而只有
CMYy