静下心来又读了几章com本质论,发觉里面我曾经关心的技术,下面摘录如下:
假设ISurfboardUser 接口被定义为如下所示的dispinterface:
[uuid(315BC28A-DEA7-11d0-8C5E-0080C73925BA)]
dispinterface ISurfboardUser {
methods:
[id(1)] void OnTiltingForward([in] long nAmount);
[id(2)] void OnTiltingSideways{[in] long nAmount);
Visual Basic程序员可以声明如下"能够理解缺省回调类型"的变量:
Dim WithEvents sb as Surfboard
这个变量定义的出现使Visual Basic 程序员可以编写事件控制函数.Visual Basic 事件控制函数只是一些简单的函数或者子过程,其名字为VariableName_EvnetName.例如,为了处理上述sb变量的OnTiltingForward回调,Visual Basic 程序员可以编写以下的代码:
Dim WithEvents sb as Surfboard
Sub sb_OnTiltiingForward(ByVal nAmount as Long)
MsgBox "The surfboard just tilted forward"
End Sub
Visual Basic 虚拟机实际上将会动态地构造出一个IsurfboardUser 实现,把进来的方法调用映射到适当的用户自定义函数上.