VB 函数 CallByName (函数动态调用,回调函数) 的一些用法
最近编程,要用到函数指针来动态地调用函数,在C 语言里很容易实现,用函数指针就行了。
VB里就没有这么方便了,查阅相关资料,讲起来均很复杂,也不容易明白,其中采用CallByName (函数动态调用,回调函数)是最方便的方法。
将之归纳为几个例子,应用方法就一目了然了。
Private Sub Command2_Click()
Dim Args(1) As String
Args(0) = "0a"
Args(1) = "1b"
CallByName Me, "SubBy1", VbMethod, "00aa", "11bb"
Form1.Label1 = (CallByName(Me, "FunBy2", VbMethod, Args(0), Args(1)))
CallByName Text1, "Text", VbLet, "New Text" '设置属性
Text1.Text = " rst=" + CallByName(Text1, "Text", VbGet) '读属性
CallByName Text1, "Move", VbMethod, 100, 100, 2000, 500 'move方法
End Sub Sub SubBy1(s1 As String, s2 As String) Debug.Print s1 + " Sub1 " + s2 End Sub Function FunBy2(s1 As String, s2 As String) As String FunBy2 = "Test2 : " + s1 + " Fun 2 " + s2 End Function
附:
Visual Basic 语言参考
CallByName 函数
执行对象的方法,或者设置或返回对象的属性。
Public Function CallByName( _
ByVal ObjectRef As System.Object, _
ByVal ProcName As String, _
ByVal UseCallType As CallType, _
ByVal Args() As Object _
) As Object
参数
ObjectRef
必选。Object。指向公开属性或方法的对象的指针。
ProcName
必选。String。包含对象的属性名或方法名的字符串表达式。
UseCallType
必选。CallType 枚举类型的枚举成员,表示所调用过程的类型。CallType 的值可以是 Method、Get 或 Set。
Args
可选。ParamArray。参数数组,包含要传递给所调用的属性和方法的参数。