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()
重写就行了
用android studio创建第一个安卓程序加载html5 页面
前言 软件版本:android studio v1.0正式版,由于v0.x以来软件变化一直比较大,很多问题搜索的解决方案也都是v0.x版本时代的,故首先声明一下版本. 动机:由于工作中需要对移动端软件 ...
jquery中load()加载页面,刷新之后,加载的页面不显示的解决办法
自定制页面跳转时携带原搜索参数的URL
介绍 django自带反向解析生成URL的功能,目的是避免硬编码,较少代码维护的代价. 前端页面使用模板语法,如:{% url "rbac: request menu_list" ...
手把手教你用android studio创建第一个安卓程序加载html5页面(二)
经过上一篇,我们已经可以打开html页面了,但是有很多细节方面的内容我们还需要调整. 打开链接的问题 细心的网友可能已经发现,打开百度页面后,点击顶部的链接,会在手机的浏览器中打开相应的页面,这显然不 ...
WebView加载html5页面
mWebView = (WebView) findViewById(R.id.mwebview); mWebView.getSettings().setJavaScriptEnabled(true); ...
Delphi2007精简版加载Borland.Studio.Together.dll错误解决办法
安装Delphi2007精简版,启动提示Borland.Studio.Together.dll加载错误,错误信息如下: Failed to load IDE add in 'C:\Program Fi ...
Tomcat启动后,访问页面报404错误解决方法
Tomcat正常启动后,出现如下情况 提供一个参考解决方法: 1.双击servers 2.把Server Locations设置为User Tomcat installation 保存后再次访问页面就 ...
eclipse启动Tomcat加载项目时报内存溢出错误解决办法
在eclipse中点击Window->Preferences打开全局属性设置对话框,如下图所示设置Tomcat运行时的JVM参数,添加这段JVM设置:-Xms256M -Xmx768M -XX: ...
随机推荐
PYTHON 写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者
def a4(arg): ret = {} for key,value in arg.items(): if len(value) > 2: ret[key] = value[0:2] else ...
Hive 字符串操作[转]
1. 字符串长度函数:length 语法: length(string A) 返回值: int 说明:返回字符串A的长度 举例: hive> select length('abcedfg') f ...
DataGridView修改HeaderText
dataGridView_htList为一个 DataGridView(ht为HoverTree的缩写)方法一:dataGridView_htList.Columns["HtAddTime& ...
php MVC 及例子解释
根据http://www.21ds.net/article/4/453改写: MVC模式在网站架构中十分常见.它允许我们建立一个三层结构的应用程式,从代码中分离出有用的层,帮助设计师和开发者协同工作以 ...
【转】正确使用Block避免Cycle Retain和Crash
原文地址:http://tanqisen.github.io/blog/2013/04/19/gcd-block-cycle-retain/ 使用指南:http://blog.csdn.net/nic ...
你的外接键盘的小键盘在Num Lock键亮着的,但是数字按了不能用,解决办法在这里
1.可能是Num Lock键卡住了导致的,你多按几次numlock键试试. 如果上面的不行,你就再试试下面的这个: 2.系统下开启了启用鼠标键导致的,解决的方法如下: (1).打开"控制面板 ...
洛谷.3808/3796.[模板]AC自动机
题目链接:简单版,增强版 简单版: #include #include const int N=1e6+5,S=26; char s[N] ...
MSF漏洞攻击练习系统 – Metasploitable2
Metasploitable2 是Metasploit团队维护的一个集成了各种漏洞弱点的Linux主机(ubuntu)镜像,方便广大黑扩跟安全人员进行MSF漏洞测试跟学习,免去搭建各种测试环境.VMw ...
system.ComponentModel.Win32Exception (0x80004005): 目录名无效。 解决方法
有时候我们需要在程序中调用 cmd.exe 执行一些命令 比如 我们会在程序写到 /// /// 执行Cmd命令 /// /// & ...
使用模块化编译缩小 apk 体积
libcocos2dlua.so编译出来有11M多,其中包含了很多不需要的模块,模块化编译,把不需要用到的模块弄成0,体积就小了. 如: 修改D:\codeide\sDiShu2formm\frame ...