响应浏览器控件的连接点事件,页面加载完毕时DocumentComplete事件会被触发。不过如果一个页面中存在frame/iframe的话,每个子页面都是一个独立的页面,DocumentComplete会被触发多次,所以只有根浏览器被触发时才代表整个页面加载完毕。判断是不是根浏览器,只需比较DocumentComplete的第一个参数是不是跟你创建的浏览器控件相同。
为webBrowser控件添加事件DocumentComplete
void CStillDownDlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL)
{
// TODO: Add your message handler code here
IUnknown* pUnk;
LPDISPATCH lpWBDisp;
HRESULT hr;
pUnk = m_webBrowser.GetControlUnknown();
ASSERT(pUnk);
hr = pUnk->QueryInterface(IID_IDispatch, (void**)&lpWBDisp);
ASSERT(SUCCEEDED(hr));
if (pDisp == lpWBDisp )
{
IHTMLDocument2 *pHTMLDocument=NULL;
if (!(pHTMLDocument = (IHTMLDocument2*)m_webBrowser.get_Document()))
return;
IHTMLElement * pBody;
pHTMLDocument->get_body(&pBody);
BSTR html;//存放html源代码
//CComBSTR html_t;//用于将BSTR转换为cout可以处理的字符串
CString html_t;
pBody->get_innerHTML(&html);
html_t=html;
}
lpWBDisp->Release();
}