https://www.cnblogs.com/MrYuan/p/5019220.html 这文章中讲到: 使用IDispatch接口的GetIDsOfNames方法根据JS函数名获取调度标识符DISPID,使用Invoke来调用JS函数。html
首先,C++把一个对象传给JavaScript 这种浏览器, 无法在JavaScript里经过枚举取得函数名. 函数名是没有事先定义的. javaScript,能够调用任何名称的函数, 算是一种请求, 写法是obj["ArcadiaTest"](2828); 或obj.ArcadiaTest(2828);
java
每次JavaScript调用函数, 请会经过 CMFCApplicationWebDlg::GetIDsOfNames取得函数Id, 再请求CMFCApplicationWebDlg::Invoke用所取的Id调用C++功能浏览器
CMFCApplicationWebDlg我写的这个类, 有继承IDispatch 须要另外实现几个虚函数:函数
// 继承抽象函数: virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject); virtual ULONG STDMETHODCALLTYPE AddRef(); virtual ULONG STDMETHODCALLTYPE Release(); virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo); virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT* pctinfo);
实例工程备份: https://pan.baidu.com/s/1UuzZcdGCH9TacMbOfOvg-A dtttspa