[IWebBrowser2问题] 请教蒋晟及各位老大!!
下面一段代码是从蒋晟老大的http://blog.joycode.com/jiangsheng/archive/2004/02/27/14110.aspx
找来的,不能navigate(请看代码,返回E_FAIL),这是怎么回事呢?还有个问题,怎样把处理代码和OnDocumentComplete事件联系起来呢?(msdn上还说如果webbrowser不可视,就不触发OnDocumentComplete事件,那怎么知道navigate成功了?)
void CVc_rhDlg::OnOK()
{
CoInitialize(NULL);
CComPtr<IOleObject> m_spOleObjectPreloadBrowser;
HRESULT hr = CoCreateInstance(CLSID_WebBrowser, NULL, CLSCTX_INPROC,
IID_IOleObject, (void**)&m_spOleObjectPreloadBrowser);
if (FAILED(hr)){
AfxMessageBox(_T("Can not create WebBrowser."));
return;
}
CComQIPtr<IWebBrowser2> pWebBrowser(m_spOleObjectPreloadBrowser);
if(pWebBrowser){
CComBSTR bstrURL = _T("about:blank");
COleSafeArray vPostData;
hr = pWebBrowser->Navigate(bstrURL,
COleVariant((long) 0, VT_I4),
COleVariant(_T(""), VT_BSTR),
vPostData,
COleVariant(_T(""), VT_BSTR));
if (FAILED(hr)){
char c[20];
AfxMessageBox(ltoa(hr,c,16)); //!!这里显示0x80004005 (即E_FAIL)!!
return;
}
pWebBrowser->put_Visible(1);
IHTMLDocument2 *iHD;
IDispatch * iD;
hr = pWebBrowser->get_Document(&iD);
if (FAILED(hr)){
AfxMessageBox(_T("Can not get iDispatch document."));
return;
}
iD->QueryInterface(IID_IHTMLDocument2,(void**)&iHD);
if (FAILED(hr)){
AfxMessageBox(_T("Can not query ihtmlDoc2."));
return;
}
BSTR bs;
iHD->get_title(&bs);
_bstr_t bst(bs,0);
AfxMessageBox((char *)bst);
}
// CDialog::OnOK();
}
问题点数:100、回复次数:2Top
1 楼jiangsheng(蒋晟.Net[MVP])回复于 2006-03-09 07:12:46 得分 100
it is designed to accelerate the creations of WebBrowser controls, not for Navigate web pages. For a navigatable internet explorer example, see
http://www.codeproject.com/shell/AutomateShellWindow.aspTop
2 楼leonatcs(LeonKennedy)(时常逛一逛csdn,有益身心健康。)回复于 2006-03-21 00:46:44 得分 0
最后用chtmlview搞定了。
谢谢!Top




