c++調用jsp一般通過在窗口中內嵌一個CAxWindow來實現的
在CAxWindow中通過調用CreateControlEx來初始化話IWebBrowser2接口
如:
CComPtr<IUnknown> punknown;
HRESULT hr = CreateControlEx(L"Shell.Explorer", NULL, NULL, &punknown);
CComQIPtr<IWebBrowser2> spWebBrowser2 = punknown;
或者通過AttachControl來實現
CComPtr<IAxWinHostWindow> spWinHost;
QueryHost(&spWinHost);
spWinHost->AttachControl(m_spWebBrowser2,m_hWnd);
c++和jsp交互的情況越來越多,可以通過IWebBrowser2接口調用jsp函數,基本步驟如下:
(1)
CComPtr<IDispatch> spDocDisp;
CComQIPtr<IWebBrowser2> spWebBrowser2
spWebBrowser2->get_Document(&spDocDisp);
(2)
CComPtr<IHTMLDocument2> spDoc2;
spDocDisp->QueryInterface(IID_IHTMLDocument2, (void**)&spDoc2);
(3)
CComPtr<IDispatch> spScript;
spDoc2->get_Script(&spDisp);
(4)
DISPID dispid = NULL;
CComBSTR bstrFun(“dosomething”);
spScript->GetIDsOfNames(IID_NULL, &bstrFun, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
(5)
DISPPARAMS params;
spScript->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,¶ms,&Result,&excepInfo,&ArgErr);