我已經寫了一個使用ATL的ActiveX控件。我使用嚮導添加了對連接點的支持,其中添加了public IConnectionPointContainerImpl<CActiveX>
和CProxy_IActiveXEvents<CActiveX>
,其中CProxy_...
是嚮導生成的用於觸發事件的代碼。Javascript只收到ActiveX事件一次
如下我定義調度接口:
[ UUID(43ECB3DF-F004-4FAD-9BFB-79211A693C3A) helpstring( 「的ActiveX事件」) ] 調度接口_IActiveXEvents { 屬性: 方法: [id(1)] void receiveCertificate([in] VARIANT_BOOL isPermissionGranted,[in] BSTR certificateXml); };
並將其與[default,source] dispinterface _IActiveXEvents
一起包含在共混物中。要啓動該事件,我將調用Fire_receiveCertificate(isGranted, _bstr_t(certXml.c_str()).copy())
,這是在嚮導代碼中定義的。
下面的JavaScript將接收事件
function ActiveXObject::receiveCertificate(permission, certificate) { alert("alert!"); }
問題是,它僅接收一次事件,我必須關閉並重新打開IE讓它再次收到該事件。我錯過了什麼嗎?