1、如何设定参数类型为数组?供vb使用。
2、如果做到参数类型为自定义的结构体呢?

解决方案 »

  1.   

    Since your ActiveX control is IDispatch-based, you are limited to a specific set of data types. Only those data types that are valid VARIANT data types can be passed or returned via a method.
      

  2.   

    VB的数组的变体类型是VT_SAFEARRAY,在VC里面对应的类是CSafeArray
    要把VC的结构翻译成VB的结构才可以,把字节对齐设置为1。
      

  3.   

    好,多谢。不知道哪里可以找到例子,可以研究一下。另外,我建的工程是MFC ActiveX,在接口添加函数的对话框里,应该给参数选择哪个类型呢?(数组参数)
      

  4.   

    哦,这么说,应该是用variant了?试试。
    然后呢?把这个参数转化成CSafeArray对象?
    然后就可以用了?
    ^_^,大概是这个样子?试试。
      

  5.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=201661
      

  6.   

    int vc++ ActiveX
     void GetFullMatrix([in] BSTR Name,[in] BSTR Workspace,[in, out] SAFEARRAY(double)* pr,[in, out] SAFEARRAY(double)* pi); in vb
    Dim MReal1(5,5) As Double 
    ’声明存放实部的Double型数组 
    Dim MImag() As Double 
    ’声明存放虚部的Double型数组 
    Set Matlab=CreateObject(“Matlab.Application”) ’初始化对象 
    Matlab.Execute(“a=hilb(5)”) 
    ’执行Matlab命令 
    Call Matlab.GetFullMatrix(“a”,“base”,MReal1,MImag) 
      

  7.   

    http://www.geocities.com/rktalla/files/atlcom.html#Passing%20structure%20to%20COM%20objects
      

  8.   

    http://j-integra.intrinsyc.com/com/doc/types/#idl
      

  9.   

    这么说 “Add Method”向导是不支持这种声明???
      

  10.   

    “http://j-integra.intrinsyc.com/com/doc/types/#idl”
    好像挺不错,仔细看看!!!
      

  11.   

    ft 啊 我搜索“CSafeArray”居然没有???
      

  12.   

    谁让你用CSafeArray的?用SAFEARRAY
      

  13.   

    用SAFEARRAY应该是可以的,但是涉及到不少API函数,有点烦。
    我试了下COleSafeArray好像是可以的。
    不知道用SAFEARRAY和用COleSafeArray有什么区别?用COleSafeArray会有什么限制呢?