ATL을 사용하여 ActiveX 컨트롤을 작성했습니다. 마법사를 사용하여 public IConnectionPointContainerImpl<CActiveX>
및 CProxy_IActiveXEvents<CActiveX>
을 추가 한 연결 지점에 대한 지원을 추가했습니다. 여기서 CProxy_...
은 이벤트를 발생시키는 마법사 생성 코드입니다. 다음과 같이자바 스크립트가 ActiveX 이벤트를 한 번만받습니다.
는 내가있는 dispinterface를 정의했습니다 :
[ UUID (43ECB3DF-F004-4FAD-9BFB-79211A693C3A), helpstring ("액티브 이벤트") ] 있는 dispinterface의 _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())
으로 전화하십시오.
다음 자바 스크립트 문제는 한 번만 이벤트를받을 수있는 이벤트
function ActiveXObject::receiveCertificate(permission, certificate) { alert("alert!"); }
을받을 것이다, 나는 닫고 다시 이벤트를받을 얻기 위해 IE를 다시해야합니다. 내가 놓친 게 있니?