c++mfc的类别型网录
来源:百度知道 编辑:UC知道 时间:2024/06/07 01:17:17
这个问题还请你帮我解释下谢谢!用m_pnextclass连接的顺序是怎么来的?根据什么建的?( 我没有在前面看见对结构体成员cruntimeclass* m_pnextclass的赋值语句啊??)m_pbaseclass的连线我知道:就是它的基类嘛。 你的第一个回答没切入要点,呵呵。 还有建立那个网是不是要2个宏哦declare_dynamic(实现插入结构cruntimeclass)implement_dynamic(实现连接赋值给cruntimeclass)
关于你的补充问题的回复:看下面的注释
class CExample : public CBaseExample
{
DECLARE_DYNAMIC(CExample)
...
};
上面展开就是:
class CExample : public CBaseExample
{
public:
static CRuntimeClass classCExample; //看到这个数据成员了没?将会在这个数据成员中初始化m_pNextClass
virtual CRuntimeClass GetRuntimeClass() const;
...
}
IMPLEMENT_DYNAMIC(CExample, CBaseExample) 展开如下:
static char _lpszCExample[] = "CExample";
CRuntimeClass CExample::classCExample = {
_lpszCExample, sizeof(CExample), 0xFFFF, NULL,
&CBaseExample::classCBaseExample,//这个是m_pBaseClass
NULL,//这个是m_pFirstClass
};
static AFX_CLASSINIT _init_CExample(&CExample::classCExample);// 看到这个了没,m_pNextClass将会在这里面出现
AFX_CLASSINIT 展开如下:
pNewClass->m_pNextClass = CRuntimeClass::pFirstClass;//传说中的m_pNexClass终于出来了!
CRuntimeClass::pFirstClass = pNewClass;
具体的你可以看书上第99页,那里写得较多,只是有点乱,个人觉得