【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对象,则会在所有内容(包括窗口,框架,对象和图片等)加载完毕后触发, 如果处理函数绑定在元素上,则会在元素的内容 ...
随机推荐
- stark - 5 ⇲ 其他常用功能
Ⅰ 排序 当数据量增多,对于数据 我们应该能够指定如何排序的.且此功能应该是可以给用户自定义进行配置的. 这是StarkHandler类的方法1 order_list = [] def get_ord ...
- Python 求“元组、列表、字典、数组和矩阵”的大小
总结: 首先 import numpy as np A = np.random.randint(1,100,size = (4,5)) >>A>>array([[56, 96, ...
- Mac 10.12安装远程桌面工具TeamViewer
说明:个人使用时免费的,虽然启动时有弹框,但是不影响使用. 下载: https://www.teamviewer.com/zhCN/
- Python离线安装依赖包
1.制作requirement.txt pip freeze > requirement.txt 2.下载离线Pytho安装包 pip download -r requirement.txt - ...
- nginx: [alert] kill(3475, 15) failed (3: No such process) 解决方案
cd nginx安装目录下/conf/nginx.conf 查看pid文件存放路径 (如果自己知道就不用执行上面这一步) 然后删除这个nginx.pid文件 然后再次杀掉nginx进程 搞定
- jenkins配置构建执行状态
运行构建 在项目 左侧列表点击 “立即构建” ,在 “Build History” 列表中,会看到执行状态,蓝色圆点表示构建成功,红色圆点表示构建失败 点击 构建失败的任务(红色的小圆点).然后点击“ ...
- Unix/Linux文件类型及访问权限
在Linux系统中,有7种文件类型. 普通文件 (regular file) 目录文件 (directory) 链接文件 (symbolic link) 管道文件 (FIFO) 套接字文件 (sock ...
- multi-threads JavaEE 容器
Thread -- Request What is recommended way for spawning threads from a servlet in Tomcat [duplicate] ...
- C++中文件流操作
一.C++中流和流操作符 C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流.C++输入输出除了 ...
- Integer 与 int -- 自动装箱(autoboxing)与自动拆箱(unboxing)
转载于 http://www.ticmy.com/?p=110 jdk1.5引入了自动装箱(autoboxing)与自动拆箱(unboxing),这方便了集合类以及一些方法的调用,同时也使初学者对其感 ...