首先创建一个mfc的dlg工程,工程名叫IWebBrowser2_DEMO
在dlg上右键插入ActiveX控件,找到Microsoft Web Browser后点击确定,并添加变量m_test
添加一个button按钮,双击响应事件
m_test.Navigate(L"http://www.baidu.com",NULL,NULL,NULL,NULL);
再在dlg窗口添加一个edit控件,调整好大小,设置水平和垂直滚动条
在Web Browser控件上右键-属性,添加控件事件DocumentComplete
生成代码如下
BEGIN_EVENTSINK_MAP(Ctestweb1Dlg, CDialog)
ON_EVENT(Ctestweb1Dlg, IDC_EXPLORER1, 259, Ctestweb1Dlg::DocumentCompleteExplorer1, VTS_DISPATCH VTS_PVARIANT)
END_EVENTSINK_MAP()
当网页正常加载成功后自动将源码写入到edit控件中
void Ctestweb1Dlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL)
{
// TODO: 在此处添加消息处理程序代码
m_test.put_Silent(TRUE);
IHTMLDocument2 *objDocument=NULL;
CComPtr<IHTMLElement> m_pBody;
CComBSTR bstrHTMLText;
objDocument=(IHTMLDocument2 *)m_test.get_Document();//m_ie是浏览器控件
HRESULT hr=objDocument->get_body(&m_pBody);
if (FAILED(hr))
return;
hr=m_pBody->get_outerHTML(&bstrHTMLText);
if (FAILED(hr))
return;
CString html=bstrHTMLText.m_str;//获取到的html代码
SetDlgItemText(IDC_EDIT,html);
}
其中
m_test.put_Silent(TRUE);
表示当遇到js脚本错误的时候自动跳过