使用VarPtr函数可以获得变量地址:Dim x as ByteDebug.Print VarPtr(x)不过正确的方式是在函数定义时将参数定义成ByRef类型的,这样VB在传递参数时传递的就是参数的指针而不是参数值。

解决方案 »

  1.   

    说详细一点吧,我做一个OCX。原型比如说是
    [id(6)] boolean writeAddress(short* pByte);在VB6 中使用了这个控件,
    就变成了:Sample1.writeAddress(pByte as integer) as boolean
    如果直接用 dim buf as byte 的形式,编译通过,运行不通过。
    to: TechnoFantasy(www.applevb.com), varPtr 是 long 阿。同样编译通过,运行不通过。
      

  2.   

    哦,你的这个不是调用API函数,是调用ActiveX控件中的方法。至于参数的传递,应该是: Sample1.writeAddress(pByte as long) as boolean
    因为在Win32下面所有的指针都是32位的。
      

  3.   

    后来我重写了那个ActiveX,用了两个 成员变量保存了一下数据,直接不传递参数了。