VC6重载BeforeNavigate2和DocumentComplete函数方法 .
来源:互联网 发布:mac按哪个键切换输入法 编辑:程序博客网 时间:2024/06/01 09:38
众所周知BeforeNavigate2和DocumentComplete函数是IE未公开的接口,如果你做基于IE的二次开发的话,而且很不幸因为种种原因只能用VC6的话,那么本文将帮助你,告诉你如何正确识别网页下载完毕以及在网页未下载完成的时候正确识别真正的url
重载这两个函数的方法是:
第一步
在chtmlxxxview.h文件添加
void DocumentComplete(LPDISPATCH pDisp,VARIANT *URL);
void BeforeNavigate2(LPDISPATCH pDisp, VARIANT* URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers, BOOL* Cancel);
以及
DECLARE_EVENTSINK_MAP()
第二步:
在CPP文件添加
END_MESSAGE_MAP()
BEGIN_EVENTSINK_MAP(CTyreaderView,CHtmlView)
ON_EVENT(CHtmlView, AFX_IDW_PANE_FIRST, 259 /* DocumentComplete */, DocumentComplete, VTS_DISPATCH VTS_PVARIANT)
ON_EVENT(CHtmlView, AFX_IDW_PANE_FIRST, 250,BeforeNavigate2,VTS_DISPATCH VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PBOOL)
END_EVENTSINK_MAP()
第三部:
在CPP文件天津爱函数实体
- void CTyreaderView::BeforeNavigate2(LPDISPATCH pDisp, VARIANT* URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers, BOOL* Cancel)
- {
- IDispatchPtr spDisp;
- HRESULT hr;
- CString url;
- CString CurUrl = CString(m_curPath);
- hr = m_pBrowserApp->QueryInterface(IID_IDispatch,(void**)&spDisp);
- // m_pBrowserApp->Release();
- // Is the IDispatch* passed to us for the top-level window ?
- m_IsDown = 0;
- if(pDisp == spDisp)
- {
- url = VariantToString(*URL);
- if(url == CurUrl)
- {
- }
- else
- {
- m_url = url;
- if(1 == m_ReadMode) OnReadAuthor();
- }
- }
- }
void CTyreaderView::BeforeNavigate2(LPDISPATCH pDisp, VARIANT* URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers, BOOL* Cancel){IDispatchPtr spDisp;HRESULT hr;CString url;CString CurUrl = CString(m_curPath);hr = m_pBrowserApp->QueryInterface(IID_IDispatch,(void**)&spDisp);//m_pBrowserApp->Release(); // Is the IDispatch* passed to us for the top-level window ? m_IsDown = 0; if(pDisp == spDisp){url = VariantToString(*URL);if(url == CurUrl){}else{m_url = url;if(1 == m_ReadMode) OnReadAuthor();}}}
- void CTyreaderView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)
- {
- IDispatchPtr spDisp;
- HRESULT hr;
- CString url;
- CString CurUrl = CString(m_curPath);
- hr = m_pBrowserApp->QueryInterface(IID_IDispatch,(void**)&spDisp);
- m_pBrowserApp->Release();
- // Is the IDispatch* passed to us for the top-level window ?
- if(pDisp == spDisp)
- {
- url = VariantToString(*URL);
- m_IsDown = 1;/*下载完成 added by songbin 2011-8-24*/
- }
- // m_pBrowserApp->Release();
- }
- VC6重载BeforeNavigate2和DocumentComplete函数方法
- VC6重载BeforeNavigate2和DocumentComplete函数方法 .
- java方法重载和构造函数的重载
- Java中构造函数重载和方法重载
- 方法重载与函数重载
- .NET Framework 接收BeforeNavigate2事件BUG的替代方法
- 方法和重载方法
- 【js学习笔记-057】构造函数重载和工厂方法
- 构造函数和重载
- 函数重载和模板
- 函数重载和字典
- 引用和函数重载
- 函数重载和重写
- matlab函数和重载
- JAVA 方法重载和构造函数重载---转载自阿朱
- 方法重载和重写
- 方法重写和重载
- 参数和方法重载
- 取得当前iPhone内存使用量
- getBoundingClientRect() 来获取页面元素的位置
- UINavigationController切换controller动画设置
- property_get/property_set
- svn、TortoiseSVN冲突中 Files 的值“ < < < < < < < .mine”无效路径中具有非法字符
- VC6重载BeforeNavigate2和DocumentComplete函数方法 .
- ios如何取得iphone/ipad的磁盘空间
- 将石头随即放入矩阵中 找出最小SubMatrix包含所有石头
- java环境变量配置
- java环境变量设置(完美版)
- Matlab 2011集成Visual studio 2010编译器
- spring启动后立即执行指定的函数
- hostent结构介绍
- 2个日期之间有多少天