给你一段代码看看~!
         CString str = "Analyse";
CRuntimeClass* pClass = GetRTClass( str );
if( ! pClass ) return NULL;  // 无效类名
Analyse* pOb = (Analyse*)pClass->CreateObject();
if( ! pOb )
return NULL; // 创建对象失败
else {
AfxMessageBox( "create object success ! " );
delete pOb;
}

解决方案 »

  1.   

    等一下,等一下,这个GerRTClass()是什么东东,msdn上并没有这个函数啊。
    它的功能和我想的一样,是获得一个合适的CRuntimeClass,但这是你自己写的吗
      

  2.   

    char szClassName[]="CAnalyse";
    CRunTimeClass * pClass,* pClass1;
    CObject * pOb;
    AFX_MODULE_STATE* pModuleState = AfxGetModuleState();
    for (pClass = pModuleState->m_classList; pClass != NULL;
    pClass = pClass->m_pNextClass)
    {
    if (lstrcmpA(szClassName, pClass->m_lpszClassName) == 0)
    {
         try{
                         pOb=pClass->CreateObject();
                      }
             
    }
    }
      

  3.   

    对了,我要的就是这个东西,我试试,成功就马上给分。谢谢jyf7862(jyf) 了
      

  4.   

    很奇怪的问题,AfxGetModuleState()这个函数在msdn中也查不到,不是我的msdn中有问题吧。但在vc中能找到,什么原因呢?
      

  5.   

    AfxGetModuleState以及你可以用但文档中没有的函数都是AFX框架的内部函数.看看: 
    CObject* CreateObject(const CString& strClassName)
    {
        ASSERT(!strClassName.IsEmpty());
        CRuntimeClass* prc = RUNTIME_CLASS(strClassName);    // 检查运行时刻类的有效性 ...
        ASSERT(prc != NULL);
        ASSERT(prc->IsDerivedFrom(RUNTIME_CLASS(CObject));    // 这里不要把创建错误直接反馈给用户, 这个函数应该只对调用者负责... 
        return (CObject*)prc->CreateObject();
    }
      

  6.   

    我再加点分,因为还有一个问题
        我今天仔细看了这几个宏,发现了一个afxinitclass()函数,就是用于连接CRuntimeClass到m_classList,但是只在IMPLEMENT_SERIAL宏的底下用到了,用法和上面各位说的差不。   
        我的问题是,难道IMPLEMENT_DYNAMIC,IMPLEMENT_DYNCREATE就不用把其CRuntimeClass结构连接到m_classList中吗,那么  jyf7862(jyf)  给出的代码可以用吗?
      

  7.   

    我只是对mfc的内部结构有点感兴趣,欢迎有兴趣的朋友踊跃发言,言者有分的啦。
      

  8.   

    想了解mfc内部,请看一下侯捷的《深入浅出mfc〉吧。你提的问题此书专门讲过。
      

  9.   

    flyspirit(flyspirit),我就是看过了,所以才有这个疑问,如果你仔细看了解释mfc三宏的那部分,再对照vc6.0中mfc的源码,你就会发现并不是完全一样的,这就是我上面的问题所在了。并不是说一本好书上的东西就都是对的,我觉得侯先生在解释的时候作了一些简化,而我现在正是想深入了解它。