+ -
当前位置:首页 → 问答吧 → 大师指点:DLL的参数为一个回调函数,VB6可以,VB2005不行。

大师指点:DLL的参数为一个回调函数,VB6可以,VB2005不行。

时间:2011-12-08

来源:互联网

Public Function BackCallFun(ByVal a As Integer, ByVal b As Integer) As Integer
  ...
  ...
End Function

dll申明:

Public Declare Function SetCallBack Lib "DIVERS.dll" (ByVal nBackCallFun As Integer) As Integer

vb6:
dim nResult as integer
nResult = SetCallBack(AddressOf BackCallFun)
成功

vb2005:
dim nResult as integer
nResult = SetCallBack(AddressOf BackCallFun)

“AddressOf”表达式不能转换为“Integer”,因为“Integer”不是委托类型。

请教大虾指点!谢谢!

作者: xiaowen01   发布时间: 2011-12-08

Public Delegate Function BackCallFunDelegate(ByVal a As Integer, ByVal b As Integer) As Integer

  Public Function BackCallFun(ByVal a As Integer, ByVal b As Integer) As Integer
 
  End Function



  Public Declare Function SetCallBack Lib "DIVERS.dll" (ByVal nBackCallFun As BackCallFunDelegate) As Integer
 
  Dim nResult As Integer
nResult = SetCallBack(New myDelegate(AddressOf BackCallFun) )

作者: haoting987   发布时间: 2011-12-08

打错了。。

Public Delegate Function myDelegate(ByVal a As Integer, ByVal b As Integer) As Integer

  Public Function BackCallFun(ByVal a As Integer, ByVal b As Integer) As Integer
  。。。
  End Function

  Public Declare Function SetCallBack Lib "DIVERS.dll" (ByVal nBackCallFun As BackCallFunDelegate) As Integer
  
  Dim nResult As Integer
nResult = SetCallBack(New myDelegate(AddressOf BackCallFun) ) 
 

作者: haoting987   发布时间: 2011-12-08