CDHtmlDialog加壳HTML5页面跳转错误解决(原)
Posted 默默地
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CDHtmlDialog加壳HTML5页面跳转错误解决(原)相关的知识,希望对你有一定的参考价值。
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()
重写就行了
以上是关于CDHtmlDialog加壳HTML5页面跳转错误解决(原)的主要内容,如果未能解决你的问题,请参考以下文章
CDHTMLDIALOG中对input type=file的操作