CDHtmlDialog加壳HTML5页面跳转错误解决(原)
2016-06-30 17:06
531 查看
HTML5+Native方式开发应用程序,遇到的一个问题:HTML5实现的阅读器在打开文档时,CDHtmldialog类的跳转函数报错,忽略错误程序可以正确执行。
错误代码:OnNavigateComplete函数的ASSERT(m_spHtmlDoc==NULL);
跟踪分析:_OnBeforeNavigate2和_OnNavigateComplete2总是成对执行,_OnBeforeNavigate2函数中有m_spHtmlDoc = NULL;语句,所以不会出现上述断言错误。而在点击html5按钮打开文档时,程序直接跳到了_OnNavigateComplete2而没有执行_OnBeforeNavigate2。(具体是如何调用的,没法往下跟了)
问题解决:重写_OnBeforeNavigate2和_OnNavigateComplete2函数,执行代码内容不变,添加一变量进行控制,使得两个函数成对执行。解决
后来测试发现直接屏蔽打开文档后_OnNavigateComplete2函数的执行也不会报错,而且未发现功能缺失。
头文件:
DECLARE_EVENTSINK_MAP()
void _OnBeforeNavigate2(LPDISPATCH pDisp, VARIANT FAR* URL, VARIANT FAR* Flags, VARIANT FAR* TargetFrameName,
VARIANT FAR* PostData, VARIANT FAR* Headers, BOOL FAR* Cancel);
void _OnNavigateComplete2(LPDISPATCH pDisp, VARIANT FAR* URL);
源文件:
源文件:
BEGIN_EVENTSINK_MAP(CBJCAPDFJSClientDlg, CDHtmlDialog)
ON_EVENT(CBJCAPDFJSClientDlg, AFX_IDC_BROWSER, 250 /* BeforeNavigate2 */, _OnBeforeNavigate2, VTS_DISPATCH VTS_PVARIANT
VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PBOOL)
ON_EVENT(CBJCAPDFJSClientDlg, AFX_IDC_BROWSER, 252 /* NavigateComplete2 */, _OnNavigateComplete2, VTS_DISPATCH VTS_PVARIANT)
END_EVENTSINK_MAP()
重写就行了
错误代码:OnNavigateComplete函数的ASSERT(m_spHtmlDoc==NULL);
跟踪分析:_OnBeforeNavigate2和_OnNavigateComplete2总是成对执行,_OnBeforeNavigate2函数中有m_spHtmlDoc = NULL;语句,所以不会出现上述断言错误。而在点击html5按钮打开文档时,程序直接跳到了_OnNavigateComplete2而没有执行_OnBeforeNavigate2。(具体是如何调用的,没法往下跟了)
问题解决:重写_OnBeforeNavigate2和_OnNavigateComplete2函数,执行代码内容不变,添加一变量进行控制,使得两个函数成对执行。解决
后来测试发现直接屏蔽打开文档后_OnNavigateComplete2函数的执行也不会报错,而且未发现功能缺失。
头文件:
DECLARE_EVENTSINK_MAP()
void _OnBeforeNavigate2(LPDISPATCH pDisp, VARIANT FAR* URL, VARIANT FAR* Flags, VARIANT FAR* TargetFrameName,
VARIANT FAR* PostData, VARIANT FAR* Headers, BOOL FAR* Cancel);
void _OnNavigateComplete2(LPDISPATCH pDisp, VARIANT FAR* URL);
源文件:
源文件:
BEGIN_EVENTSINK_MAP(CBJCAPDFJSClientDlg, CDHtmlDialog)
ON_EVENT(CBJCAPDFJSClientDlg, AFX_IDC_BROWSER, 250 /* BeforeNavigate2 */, _OnBeforeNavigate2, VTS_DISPATCH VTS_PVARIANT
VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PBOOL)
ON_EVENT(CBJCAPDFJSClientDlg, AFX_IDC_BROWSER, 252 /* NavigateComplete2 */, _OnNavigateComplete2, VTS_DISPATCH VTS_PVARIANT)
END_EVENTSINK_MAP()
重写就行了
相关文章推荐
- Html5知识
- 【分享】html5 开发工具——WeX5中的各种绑定方式
- html5+css+div随时笔记
- swiper的基础使用(十七)
- HTML5 不再支持哪些元素
- 【分享】html5 开发工具——WeX5中的各种绑定方式
- Angular中的$cacheFactory的作用和用法
- Greenplum(4.3.8.2)使用GPHDFS协议创建外部表访问CDH5.7.0环境的HDFS文件系统
- HTML5 Web Workers
- HTML5 应用程序缓存
- [置顶] HTML5 图片<img/>下边界出现空隙,去除空隙的解决方法
- html5学习摘录
- html5 input type=datetime-local 无法赋值问题
- swiper的基础使用(十一)
- HTML5+CSS3 loading 效果收集
- html5之histroy浅析
- H5猜字母游戏
- HTML5的世界
- 兼容html5方案
- H5动效的常见制作手法