在工程中Import "../MyActiveX.ocx" 
然后
CComPtr<_DMyActiveX> m_pActiveX;pActiveX->CoCreateInstance(__uuid(MyActiveX));
创建成功了
但是接着调用接口中的方法会出错
pActiveX->DoSomeThing();Unhandled exception at 0x7c812a5b in tryDlg.exe: Microsoft C++ exception: _com_error at memory location 0x0012f354..没有调到控件的函数中去但是在生成的tlh文件中可以看到定义的方法
请问这是为什么?

解决方案 »

  1.   

    构造函数都跟进去了,那不会跟到你那个DoSomeThing()里面去,看看是哪里出问题
      

  2.   

    更不到DoSomeThing()里面去
    跟到thi文件里面的那个函数中的时候就出错了
      

  3.   

    还是不行
    连调用ActiveX自己生成的AboutBox()函数也调不进去
    是不是OCX的接口不能这样用呀
      

  4.   

    那你一定用错了!你是在AciveX控件工程中使用它的方法,还是在其它工程使用此控件方法啊?好像有点糊涂了!在AciveX控件工程中使用此方法,你可以直接对Ctrl类对像进行操作;
    如果在其它工程使用的话,你要如此这般:
    1、注册控件;
    2、在你的工程中的对话框中,插入对应的控件;
    3、在对话框上为控件添加一控件变量,这时VC会帮你生成控件对应的类;
    4、在对话框中可以操作控件变量了!
      

  5.   

    谢谢楼上的
    我是不在ActiveX控件工程中使用该方法
    你说的方法的确可以
    但是为什么用我的那种方法不可以??
    ActiveX控件也是COM对象呀
      

  6.   

    ::CoInitinstance();了吗?
    如果的你的ACtivex是一个控件,需要画到窗体上的,如果没有父窗口,就不执行了
      

  7.   

    http://support.microsoft.com/kb/195188
      

  8.   

    会不会是因为某些初始化实在控件的OnCreate之类的函数里面做的,所以需要先创建控件才行,在对话框里调用时,对话框替你创建好控件了已经