我将一个MFC单文档的exe程序编译成了一个OCX,但没有注册成功。用regsvr32注册时提示“DllRegisterServer in XXX.OCX failed. Return code was: 0x80040200”
请各位高人指点。

解决方案 »

  1.   

    有没有人做过将单文档的MFC应用程序编译成ActiveX控件呀?
      

  2.   

    1、
    “MFC单文档的exe程序编译成了一个OCX”是什么意思?
    两个应用的结构完全不同。
    你可以将你的MFC单文档的exe程序改编成了一个MFC ActiveX。
    但是MFC ActiveX注册和它是否由单文档程序改编没有什么关系。
    2、
    ActiveX可以容纳一个Doc/View
    http://www.codeguru.com/Cpp/COM-Tech/atl/article.php/c27/
      

  3.   

    我是采用微软网站上的文档介绍的方法做的:http://www.microsoft.com/mind/0497/mfc.asp
    DEBUG发现注册程序执行到DllRegisterServer()的
    if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
    return ResultFromScode(SELFREG_E_TYPELIB);
    就返回了。是什么原因呢?
      

  4.   

    找到问题所在了:
    控件rc文件的最后有一句:1 TYPELIB "MyOcx.tlb"我将它写成了如下形式:#ifdef MYOCX_CONTROL
    1 TYPELIB "MyOcx.tlb"
    #endif但在编译时VC的处理很奇怪,就像没有定义MYOCX_CONTROL一样。没办法只有去掉
    #ifdef MYOCX_CONTROL
    #endif
    只留下:
    1 TYPELIB "MyOcx.tlb"
    再编译后就能注册成功了。哪位高手解释一下这是为什么?