码迷,mamicode.com
首页 > 编程语言 > 详细

MFC WebBrowser判断网页加载完成

时间:2020-03-27 16:49:11      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:完成   成功   tco   bsp   处理程序   box   url   判断   mic   

mfc 的webbrowser是大家使用非常多的一种查看操作网页的一种控件,在使用中,判断网页什么时候加载完成就显得非常重要了。下面介绍我采用的一种方法,这种方法可以判断网页内部即使有frame网页也是可以判断成功。
在对话框里添加一个webbrowser控件,在对话框的初始化函数OnInitDialog()中加入web控件默认加载的网页。

//禁用IE脚本错误
m_web.put_Silent(TRUE);
//默认打开百度网页
m_web.Navigate(L"https://www.baidu.com/", NULL, NULL, NULL, NULL);

添加一个全局变量:

技术图片

 

 


//全局变量的定义
LPDISPATCH glpDisp = NULL;

 

接下来为webbrowser控件添加NavigateComplete2Explorer1消息

技术图片

 

 

 

在NavigateComplete2Explorer1的消息响应函数中添加下面代码:

 

技术图片

 

 

 

void CMFCTestDlg::NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL)
{
     // TODO: 在此处添加消息处理程序代码
     glpDisp = pDisp;
}

 


接下来为webbrowser控件添加NavigateComplete2Explorer1消息技术图片

 

 

 

 

在NavigateComplete2Explorer1的消息响应函数中添加下面代码:


void CMFCTestDlg::NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL)
{
// TODO: 在此处添加消息处理程序代码
glpDisp = pDisp;
}


接下来为webbrowser控件添加DocumentCompleteExplorer1消息响应

技术图片

 

 

 

在DocumentCompleteExplorer1消息响应函数中判断网页是否加载完成

技术图片

 

 

 

代码如下:

//获取网址
CString strUrl = URL->bstrVal;
if (pDisp == glpDisp)
{
//根据网址判断网页是否加载完成
if (strUrl == L"https://www.baidu.com/")
{
MessageBox(L"网页加载完成!");
}
}


在这里说一下判断网页加载完成的原理,DocumentComplete虽然字面意义是网页加载完成后触发的消息响应,但是对于网页内部包含有子框架网页时,这种方式就不行了。因为frame里的网页加载完成,也会触发这个消息响应,因此结合网页加载完成后网址是不变的来判断网页是否加载完成。
运行效果如下图:

 

技术图片

 

MFC WebBrowser判断网页加载完成

标签:完成   成功   tco   bsp   处理程序   box   url   判断   mic   

原文地址:https://www.cnblogs.com/sea520/p/12582277.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!