我已经写了一个使用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让它再次收到该事件。我错过了什么吗?