项目中经常碰到JS与Com组件交互的问题,通过查找网络资料和项目实际需要,总结如下:
一、Com组件简单回调JS代码
JS中定义函数
function printMsg(msg1, msg2, msg3, msg4, msg5) {
alert(msg1);
alert(msg2);
alert(msg3);
alert(msg4);
alert(msg5);
}
Com组件中定义函数接口,以便将JS中定义的函数作为参数传递给Com组件
头文件中定义IDispatch接口:
static CComPtr<IDispatch> m_spCallback;
STDMETHODIMP CJSCallBack::SetJsCallbackFunc(VARIANT scriptCallback)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加实现代码
if (scriptCallback.vt == VT_DISPATCH)
{
m_spCallback = scriptCallback.pdispVal;
}
return S_OK;
}
在JS中调用SetJsCallbackFunc接口注册回调函数
var obj = new ActiveXObject("ComForJS.JSCallBack.1");