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