要給 Windows® 腳本部件來添加事件能力:
有些主機(jī)環(huán)境還會(huì)要求您生成一個(gè)類型庫(kù),主機(jī)需要這個(gè)類型庫(kù)來綁定事件。詳細(xì)信息請(qǐng)參閱創(chuàng)建腳本部件類型庫(kù)。
注意 Behavior 處理程序以一種略微不同的方式來說明事件。詳細(xì)信息請(qǐng)參閱在 Behavior 腳本部件中說明自定義事件。
必須逐個(gè)地聲明每個(gè)希望能夠激活的事件。
要聲明一個(gè)事件
<public> <property name="sname"/> <method name="factorial"/> <event name="namechanged"/> <event name="querydone"/> </public>
COM 編程通過派遣標(biāo)識(shí)符(稱為 dispid ) 來提供事件通知,派遣標(biāo)識(shí)符是指標(biāo)識(shí)部件事件的整數(shù)值。dispid 在編譯時(shí)被寫入該部件的類型庫(kù),然后由宿主應(yīng)用程序用來綁定到事件。
給腳本部件創(chuàng)建類型庫(kù)的過程將自動(dòng)為腳本部件的事件生成 dispid 。不過,如果您愿意,您可以指定自己的 dispid 。這樣做的好處是:
要給事件指定一個(gè) dispid,請(qǐng)?jiān)?<event> 元素中包括該 dispid 屬性,如下例所示:
<public> <event name="namechanged" dispid="22"> </public>
Dispid 在腳本部件內(nèi)必須是唯一的。您可以將一個(gè)為負(fù)數(shù)指定為 dispid,并映射到傳統(tǒng)的事件,但必須使用指定的范圍(如 -999 到 -500)加以控制。關(guān)于保留的 dispid 的范圍的詳細(xì)信息,請(qǐng)參閱 MSDN 庫(kù)中的 DISPID 的文檔。
注意 0 這個(gè) dispid 號(hào)碼用來標(biāo)識(shí)缺省的方法或?qū)傩。詳?xì)信息請(qǐng)參閱說明方法和說明屬性。
可以通過調(diào)用 fireEvent 方法并指定要激活的事件名來激活一個(gè)事件。不能激活沒有在 <implements> ; 元素中聲明的事件?梢约せ钅_本部件文件任何腳本中的事件。例如,下面演示了在屬性值更改時(shí)如何激活事件。
<script language="VBScript">
<![CDATA[
Sub put_lowercaseName(newLCName)
name = newLCName
fireEvent("namechanged")
End Sub
]]>
</script>
在 Behavior 腳本部件中說明自定義事件 | 說明方法 | 說明屬性 | 在宿主應(yīng)用程序中處理腳本部件的事件 | 腳本部件文件的內(nèi)容