CDHtmlDialog类的使用心得

news/2024/7/5 19:18:12

 
 在CDHtmlDialog类使用中,总是会遇到HTML不能正确解析资源的问题。我的经验如下:

1。使用绝对路径在资源里引入HTML网页和图片资源:
     使用RES://应用程序名称/资源类型/#资源号,
     例如:如果你的应用程序名为c.exe,html网页或资源保存在HTML类型下。并且查看资源标示号为133,便可以这样引用:res://c.exe/html/#133。或这样引用:res
://c:/c.exe/html/#133

2。使用相对路径引用:
    如果使用方法1,总得去寻找应用程序名称,如果引入的是html中的图片,有诸多不便,譬如:应用程序如果改变了名称,那调用便会无效。为了防止这些纠葛,有一个非常好的办法就是:把所有使用的资源(图片,CSS,JS等),统统放到HTML资源类型下,引用的时候写成 res://#资源号就可以了。譬如上例便可以这样引用:res:/#133。当然好像res:/ 和res:// 是通用的。

3。FLASH控件的支持:
   我没有在资源里引用flash成功,看了看flash的官方文档,好像必须为绝对路径才可以。例如movie=“d:
//flash//test.swf”是可以成功的。

4。不在资源里引用HTML,直接在本地文件里使用。可以在CDHtmlDialog的继承类里添加一个函数来处理。


void CDHtmlViewSpec::GotoUrl(LPCTSTR pszUrl)
...{
    CString strPath,str;
    DWORD dwSize=MAX_PATH;
    ::GetModuleFileName(NULL,strPath.GetBuffer(MAX_PATH),dwSize); //AfxGetResourceHandle()
    strPath.ReleaseBuffer(dwSize);
    str=strPath.Left(strPath.ReverseFind('//')+1);
    ASSERT(pszUrl!=NULL);
    if(pszUrl!=NULL)
    ...{
        CString strUrl;
        strUrl=str+pszUrl;
        Navigate(_T("
file:///")+strUrl);
    }
}
本函数为了方便没有对路径进行更多处理,在使用的时候,可以以exe文件所在的目录为当前目录,以相对路径表示pszUrl。调用方法:
gotoUrl("html//test.html")
gotoUrl("..//html2/test.htm")
这样载入HTML网页,网页内的资源定位都是相对路径定义即可。图片和flash都可以正常载入。
不过这样的话,就有个问题,用户可以随时修改你的html文件。如果你有消息处理的话,很容易就使你的程序崩溃。
我一般的做法就是修改html的扩展名,迫使一般用户不轻易修改它,譬如改称.dat。
 

 
 
  


http://www.niftyadmin.cn/n/1996498.html

相关文章

tortoisesvn创建部署项目_TortoiseSVN服务器端的配置

编辑推荐:本文来自csdn,主要主要从安装、建立、导入、配置、启动等方面讲解了服务器的配置。配置过程如下:下载所需程序安装(路径可以更改)解压subversion-1.3.2.zip并安装到C:\Subversion按安装一般软件的方法安装TortoiseSVN,成功安装后在任…

免费好课 前端课程

01.明确你的前端学习路线与方法.pdf 01.明确你的前端学习路线与方法.html 02.列一份前端知识架构图.pdf 02.列一份前端知识架构图.html 开篇词.从今天起,重新理解前端.html 开篇词.从今天起,重新理解前端.mp3 01.明确你的前端学习路线与方法.mp3 02.列一…

python在窗口与机器人聊天_Python如何实现机器人聊天

今天午休的时候,无意之中看了一篇博客,名字叫Python实现机器人,感觉挺有的意思的。于是用其写了一个简单的Python聊天,源码如下所示:# -*- coding: utf-8 -*-import aimlimport sysimport osdef get_module_dir(name):print("…

12 学习里程碑:设计篇完结

到此为止,小册的全部设计篇的章节已经全部完结,后续我们将进入实战的环节。 在正式阅读实战的内容之前,本章我们一起来聊下小册的学习路线与目标。 如何阅读小册 如果是你高级前端或者自学能力较强的话,那么对于你来说技术栈将不…

Drag Drop 全解析

Drag & Drop 全解析 一、基本概念拖放,是指用鼠标拖动的方法,在不同程序的窗口之间、同一个程序的不同窗口之间或同一程序同一窗口的不同控件之间,进行移动、复制和粘贴等操作的技术。拖放操作是在操作系统的帮助下完成的。被拖动…

9.Dart中的类有何不同?

目录传送门:《Flutter快速上手指南》先导篇Dart 使用 class 来定义一个类。定义一个类class Point{var x;var y;Point(x, y){this.x x;this.y y;} } 复制代码在 Dart 中,如果一个类没有显示的定义默认的构造函数,会默认有一个空的构造函数。…

char型变量占几个字节_零基础学C语言(5):浮点型、字符和字符串

上一节,我们重点介绍了bool型和整型数据,并介绍了计算机的三种码制——原码、反码和补码。既然有整型,那当然有非整型,还有字符型和字符串。sizeof前面我们说过,有很多奇怪的、由基本数据类型衍生出来的数据类型&#…

python判断质数合数奇数偶数_【信奥数论】求区间质数(素数)的算法(进阶篇)...

筛选法时间限制: 1000 ms 内存限制: 65536 KB【题目】输入一个正整数n(10 ≤ n ≤ 2109),输出n以内质数的数目。【输入样例】20【输出样例】8【提示】20以内的质数有2,3,5,7,11,13,17,19说明关于质数的基础知识,可以参考上一篇文章:求单个…