以下是_IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew)的定义部分:
static char _lpsz##class_name[] = #class_name; \
        CRuntimeClass class_name::class##class_name = { \
                _lpsz##class_name, sizeof(class_name), wSchema, pfnNew,       RUNTIME_CLASS(base_class_name), NULL }; \
        static AFX_CLASSINIT _init_##class_name   (class_name::class##class_name); \
        CRuntimeClass* class_name::GetRuntimeClass() const \
                { return &class_name::class##class_name; } \AFX_CLASSINIT::AFX_CLASSINIT(CRuntimeClass* pNewClass)
{
        pNewClass->m_pNextClass = CRuntimeClass::pFirstClass;
        CRuntimeClass::pFirstClass = pNewClass;
}
其中以下两句是什么意思啊,能起到什作用啊
static AFX_CLASSINIT _init_##class_name   (class_name::class##class_name); \
CRuntimeClass* class_name::GetRuntimeClass() const \
                { return &class_name::class##class_name; } 小弟先谢过了

解决方案 »

  1.   

    ##是字符串连接符,在参数宏中,例如:#define FUNCTION_NAME(class_name) _init_##class_nameFUNCTION_NAME(CWnd)展开后就是
    _init_CWnd
      

  2.   

    这一点我懂,我主要是不懂得
    static AFX_CLASSINIT _init_##class_name   (&class_name::class##class_name); \
    CRuntimeClass* class_name::GetRuntimeClass() const \
                    { return &class_name::class##class_name; } 这里前后出现的&class_name::class##class_name,他们之间有什么联系.并且,这里的static它具体起到什么作用,声明一个静态全局变量吗?
      

  3.   

    你如果看过<<深入浅出MFC>>就会很明白了,
    这是为这个类声明并定义一个静态的运行时对象.