要给 Windows® 脚本部件来添加事件能力:
有些主机环境还会要求您生成一个类型库,主机需要这个类型库来绑定事件。详细信息请参阅创建脚本部件类型库。
注意 Behavior 处理程序以一种略微不同的方式来说明事件。详细信息请参阅在 Behavior 脚本部件中说明自定义事件。
必须逐个地声明每个希望能够激活的事件。
要声明一个事件
<public> <property name="sname"/> <method name="factorial"/> <event name="namechanged"/> <event name="querydone"/> </public>
COM 编程通过派遣标识符(称为 dispid ) 来提供事件通知,派遣标识符是指标识部件事件的整数值。dispid 在编译时被写入该部件的类型库,然后由宿主应用程序用来绑定到事件。
给脚本部件创建类型库的过程将自动为脚本部件的事件生成 dispid 。不过,如果您愿意,您可以指定自己的 dispid 。这样做的好处是:
要给事件指定一个 dispid,请在 <event> 元素中包括该 dispid 属性,如下例所示:
<public> <event name="namechanged" dispid="22"> </public>
Dispid 在脚本部件内必须是唯一的。您可以将一个为负数指定为 dispid,并映射到传统的事件,但必须使用指定的范围(如 -999 到 -500)加以控制。关于保留的 dispid 的范围的详细信息,请参阅 MSDN 库中的 DISPID 的文档。
注意 0 这个 dispid 号码用来标识缺省的方法或属性。详细信息请参阅说明方法和说明属性。
可以通过调用 fireEvent 方法并指定要激活的事件名来激活一个事件。不能激活没有在 <implements> ; 元素中声明的事件。可以激活脚本部件文件任何脚本中的事件。例如,下面演示了在属性值更改时如何激活事件。
<script language="VBScript"> <![CDATA[ Sub put_lowercaseName(newLCName) name = newLCName fireEvent("namechanged") End Sub ]]> </script>
在 Behavior 脚本部件中说明自定义事件 | 说明方法 | 说明属性 | 在宿主应用程序中处理脚本部件的事件 | 脚本部件文件的内容