实在是不好意思,一个看起来简单的问题把我搞倒了就是我需要在ATL中创建一个ActiveX,其中有一个事件要返回两个参数
例:EventName(long Id,BSTR* FName)但是在VB中使用时,会发生 Automation Error。但是同样的在一般方法中使用这个方式MethodName(long ID,BSTR* FName)就不会有问题,然后我又试着使用BSTR,也是不行的而我在ATL直接写组件,不想使用MFC,望各位高手多多指点

解决方案 »

  1.   

    应该用BSTR,我据个例子:
    //*******VC:#include <comdef.h>
    STDMETHODIMP Ctest::hello(long i, BSTR ss, long r)
    {
    // TODO: Add your implementation code here
    _bstr_t s(ss,false);
    MessageBox(0,s,"",0);
    return S_OK;
    }//********VB调用:
    Private Sub Form_Load()
     Dim ss As New ATLTESTLib.test
     Call ss.hello(1, "asdasd", 0)
    End Sub
      

  2.   

    如果事件两个参数是要发送到客户端的数据,应该为
    EventName(/*[in]*/long Id,/*[in]*/BSTR FName)
      

  3.   

    EventName(long Id,BSTR* FName)
    {
      CString str("ok");
     *FName = str.AllocSysString();
    }
      

  4.   

    返回两个参数用long*, BSTR*吧
    你怎么解决的?