公司自己写的一个ocx,在vs2005,vc6中都能加载成功,在vb6中添加部件-》勾选控件名,弹出错误消息框说某某控件无法加载,有人知道怎么解决吗?先谢了。

解决方案 »

  1.   

    添加到system32下再用REGSVR32.EXE进行注册.
      

  2.   

    找找看 工程-->部件 下面是否还有一个同名的控件名,你引用的可能前面带有"missing";
    注意看,可以从那个勾选部件的窗口看到路径的。
      

  3.   

    实在不行就把ocx拿过来编译一下了,或者重新安装系统?
      

  4.   

    首先你要确定你的OCX是属于什么组件?ActiveX控件?Automation对象?COM对象?感觉你的ocx可能不完全符合Automation对象的约束。
      

  5.   

    通过浏览直接选择该ocx文件也不行?先反注册再注册试试看
      

  6.   


    不是啊vc6一直是好的,你没看我的帖子内容吧。我是说只有vb不行
      

  7.   

    你说的多,我觉得很有可能。不过控件不是我写的,我以前也没写过ocx控件,不知道像这样的情况可能问题是什么?
      

  8.   

    前面说了,要看你的OCX设计的时候都包含了什么代码,这里是一个非常简单的OCX组件将包含的接口:IConnectionPointContainer 为事件接口公开连接点
    IDispatch   公开控件的方法和属性
    IOleControl ActiveX控件的基本接口
    IOleObject  嵌入对象的基本接口
    IProvideClassInfo2 将控件包含的类型信息提供给容器
    ISpecifyPropertyPages 允许控件显示属性表如果一定要用,就去找找源码里是否提供了上述的功能和接口。
      

  9.   

    如果是用MFC写的OCX,可以留意下控件的父类是什么类。
      

  10.   


    哈哈,昨天脑子进水了,眼睁睁地看着VC6,心里想的却是VB6。抱歉抱歉。
      

  11.   

    没事没事,这个控件很奇怪,除了vb6其他地方都显示正常,用activex control test container也没问题
      

  12.   

    http://download.csdn.net/source/1755380
    我上传了,谢谢大家帮忙测试(可能需要安装vs编译环境)
      

  13.   

    SSCE5532.DLL找不到。另外,你这个ActiveX可以引用,但不能用作组件。
      

  14.   

    Aisac试试http://download.csdn.net/source/1755576
      

  15.   

    我试了不行。我在CMD方式下用regsvr32注册了这个空间,并且提示注册成功。之后在VB6的工程中部件对话框里试图加上这个控件,显示上图错误。
      

  16.   

    疑似你的dll有问题,不能被VB6使用。因为我在引用对话框里试图引用这两个dll,会得到如下错误:
      

  17.   

    现在我就是不知道什么原因,你试试vc9,vc6,C#都是可以的,很奇怪
      

  18.   


    对的,ocx文件可以在引用对话框里被引用,不会报错。你的控件有可视界面么?如果没有,那你这样直接引用后,当动态库那样用吧。另,我也不大熟悉,瞎出的主意,仅供参考。
      

  19.   


    是一个html控件,动态加有点麻烦啊,布局位置之类的
      

  20.   

    有点进展了,发现vb6只能加载有coclasses的ocx,我那个ocx没有。继续研究啊呵呵
      

  21.   

    看了下你的OCX,应该是MFC写的,可能你用的OCX基类不是COleControl,或者缺少COleControlModule类什么的。
      

  22.   

    前面我说错了,有coclasses,看错了,又不能连续发。谢谢Aisac一直关注。
    最近要忙别的了,可能要过一段时间研究它。
      

  23.   

    不排除是VB的bug的可能性,呵呵。
      

  24.   

    是啊,微软bug真多,我常发现都习惯了。