【MFC】转:在CHtmlView中判断页面加载完成
以前的方法繁琐,这里抄了别人的方法,做了简单修改。记录下。
首先要在CHtmlView的子类中,重载如下函数:
virtual void DocumentComplete(LPDISPATCH pDisp, VARIANT* URL);
virtual void NavigateComplete2(LPDISPATCH pDisp, VARIANT* URL);
这2个函数,不是下面的函数:
virtual void OnDocumentComplete(VARIANT* URL);
virtual void OnNavigateComplete2(VARIANT* URL);
在CHtmlView的子类中,添加一个成员,并在构造函数时初始化为NULL:
LPDISPATCH m_lpURLDisp;
在NavigateComplete2中记录访问的LPDISPATCH。
void CXxxView::NavigateComplete2(LPDISPATCH pDisp, VARIANT* URL)
{
if ( !m_lpURLDisp )
m_lpURLDisp = pDisp; /* 可以不调用父类的方法, 建议调用。不调用Navigate相关的其他函数可能受到印象 */
CHtmlView::NavigateComplete2(pDisp, URL);
}
在DocumentComplete中判断这个DISPATCH。
void CXxxView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)
{
if ( m_lpURLDisp && m_lpURLDisp == pDisp )
{
CUtils::DbgView(TEXT("真在完成: %s\n"), (LPCTSTR)(_bstr_t)URL);
} /* 不调用父类的方法, 会导致OnDocumentComplete不会触发 */
CHtmlView::DocumentComplete(pDisp, URL);
}
在访问URL前,重置m_lpWBDisp成员为NULL。
void CXxxView::_FreeDISP()
{
if ( m_lpURLDisp )
m_lpURLDisp->Release();
m_lpURLDisp = NULL;
} void CXxxView::Browser(LPCTSTR Url)
{
this->_FreeDISP(); DWORD dwFlags = navNoHistory;
CHtmlView::Navigate2(Url, dwFlags, NULL);
}
【MFC】转:在CHtmlView中判断页面加载完成的更多相关文章
- js判断页面加载完毕方法
判断页面加载完成这个方法是很常见的,下面有三个常用的方法,各有利弊. 一.纯js方法 // (1).页面所有内容加载完成执行 window.onload = function(){ } // (2). ...
- JS判断页面加载完毕
//JS判断页面加载完毕,再隐藏加载效果层,一个简单的JS加载效果. document.onreadystatechange = function () { if (document.readySta ...
- js 判断页面加载状态
//----判断当前页面是否加载状态 开始 ---- document.onreadystatechange = subSomething;//当页面加载状态改变的时候执行这个方法. function ...
- jQuery Mobile中的页面加载与跳转机制
第一次做用jQuery Mobile做东西,发现一些跟平时的思维习惯不太一样的.其中这个框架的页面加载机制便是其中一个.如果不明白其中的奥秘,往往会出现一些让人摸不着头脑的怪现象,比如页面进入后点击按 ...
- JS判断页面加载是否完成
document.onreadystatechange = function() //当页面加载状态改变的时候执行function { if(document.readyState == &quo ...
- Duilib中Webbrowser事件完善使其支持判断页面加载完毕
在多iframe的页面中,需要结合DISPID_DOCUMENTCOMPLETE和DISPID_NAVIGATECOMPLETE2两个事件判断页面是否加载完毕,而duilib中没有提供对DISPID_ ...
- Webbrowser判断页面加载完成
Webbrowser 请求加载页面,页面中包含各种资源,不能够很准确的判断加载是否完成,需要通过特定的方法判断. 1.使用计数器判断页面是否加载完成.精准可控. // 计数器 ; // 添加事件响应函 ...
- Vue编写的页面部署到springboot网站项目中出现页面加载不全问题
问题描述: 在用Vue脚手架 编写出一个页面之后, 部署到后台项目中, 因为做的是一个页面 按理来说 怎么都能够在服务器上运行 , 我也在自己的node环境测试 , 在同学的springboot上运行 ...
- jquery中的页面加载方法load()
load方法会在元素的onload事件中绑定一个处理函数,如果处理函数绑定给window对象,则会在所有内容(包括窗口,框架,对象和图片等)加载完毕后触发, 如果处理函数绑定在元素上,则会在元素的内容 ...
随机推荐
- appium+python 存在多个类时,不用每次都初始化解决办法
appium+python写自动化测试用例时,为了代码的可维护性,分成不同的类是很常见的办法, 但是在运行时,每一个类都要初始化一次,即每次都会重启应用,这很麻烦,通过__new__可进行多个类之间的 ...
- Q312 戳气球
有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.每当你戳破一个气球 i 时,你可以获得 nums[left] * nums[ ...
- Mac下使用Eclipse的Show in Terminal提示command not found: mvn
在Mac下一般配置了Maven的环境变了一般都不会提示,但是如果使用zsh的扩展之后,系统默认的环境变量配置文件会发生变化,尤其使用Eclipse打开终端时,默认不会去读取用户目录下的~/.bashr ...
- python并发学习总结
目录 一.理解操作系统 二.任务类型 三.Socket模块 四.一个简单的C/S程序 五.使用阻塞IO实现并发 方案一:阻塞IO+多进程 方案二:阻塞IO+多线程 阻塞IO模型的思考和总结 六.使用非 ...
- 《Effective C++(第三版)》 的55条建议
1. 让自己习惯C++(Accustoming yourself to C++) 条款01: 视C++ 为一个语言联邦(View C++ as a federation of languages) 条 ...
- 更换bbr内核
1:首先yum update -y更新到最新CentOS 7.3 1611cat /etc/redhat-releaseCentOS Linux release 7.3.1611 (Core) 2: ...
- CentOS 开启安装EPEL YUM源
我们用yum安装软件时,经常发现我们的yum源里面没有该软件,需要自己去wget,然后configure,make,make install,太折腾了. 其实,CentOS 还有一个源叫做 EPEL ...
- Tomcat服务器安装配置
1.到http://tomcat.apache.org/官网下载Tomcat的zip版本,这样直接解压就行了,不用安装.我下载是Tomcat6.0版本的zip文件,解压在D:\Java\apache- ...
- Ambari集群里操作时典型权限问题put: `/home/bigdata/1.txt': No such file or directory的解决方案(图文详解)
不多说,直接上干货! 问题详情 明明put该有的文件在,可是怎么提示的是文件找不到的错误呢? 我就纳闷了put: `/home/bigdata/1.txt': No such file or dire ...
- 深度学习(十) GoogleNet
GoogLeNet Incepetion V1 这是GoogLeNet的最早版本,出现在2014年的<Going deeper with convolutions>.之所以名为“GoogL ...