通过IWebBrowser2的Navigate2来打开网页,怎样判断网页是否全部加载完毕

来源:互联网 发布:修车软件哪个好 编辑:程序博客网 时间:2024/04/30 17:28

首先创建一个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脚本错误的时候自动跳过

0 0
原创粉丝点击