Dim ArrayOfLongs(2) As Integer
        ArrayOfLongs(0) = 10
        ArrayOfLongs(1) = 20
        ArrayOfLongs(2) = 30
        ShowCurve.AxXGraphActiveX1.ReadArray(ArrayOfLongs(0), ArrayOfLongs.Length())方法在VB.net中的声明如下:Public Overridable Sub ReadArray(ByRef pArray As Integer, ByVal elementCount As Integer)
    ' Member of AxXGraphActiveXLib.AxXGraphActiveX在MFC的activex中方法声明:
void ReadArray(LONG* pArray, LONG elementCount);
  结果在activex中只能得到VB.net数组的第一个元素的值,为什么其它的访问不到呢?还请教!

解决方案 »

  1.   

    用VARIANT等类型,然后再转换数组
      

  2.   

    VB的数组是SAFEARRAY类型,不是C++中的数组概念,所以控件的参数应该是SAFEARRAY*,而VB调用是直接传递ArrayOfLongs而不是ArrayOfLongs(0)
      

  3.   

    参考一下这个帖子
    http://topic.csdn.net/u/20091105/11/7c3934a1-7911-45e1-9270-144fc6029829.html?74143
      

  4.   

    VB中的方法在  VB.net 下好像不能用的!
      

  5.   

    应该没问题的,只要支持SAFEARRAY类型的语言都可以使用
      

  6.   

    System.Runtime.InteropServices.SafeArrayTypeMismatchException was unhandled
      Message="指定的数组不属于需要的类型。"
      Source="Interop.ARRAYTRYLib"
      StackTrace:
           在 ARRAYTRYLib.myarrayClass.LongArray(Array& pLarr) 出现这个异常!