CDHtmlDialog类的使用心得

原创 2005年05月19日 08:36:00

在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。

ATL实现的CDHtmlDialog模板类v1.03

  • 2008年01月18日 09:55
  • 16KB
  • 下载

CDhtmlDialog的粗浅使用

忘记了是从那里得来的Word了,本文非本人所写 要使用它,我们先创建一个类 class ChtmlDlg : public CDHtmlDialog { // 构造 public:  ...
  • eldn__
  • eldn__
  • 2012年10月26日 14:51
  • 1097

CDHtmlDialog的基本使用(C++调用JS函数的实现)

来自:清泛网 - http://www.tsingfun.com/html/2015/dev_0826/CDHtmlDialog_cpp_call_js_interactive.html 《CDH...
  • zqp2013
  • zqp2013
  • 2015年08月27日 09:01
  • 313

CDHtmlDialog类OnBeforeNavigate2取消页面浏览后页面元素事件失效问题的解决方法

在基于CDHtmlDialog类的对话框使用OnBeforeNavigate2已经有很多人给出了方法 http://alee201.blog.163.com/blog/static/277908512...
  • gogogo
  • gogogo
  • 2013年12月06日 10:58
  • 2144

关于MFC项目中使用CDHtmlDialog禁止脚本错误的方法

当WebBrowser控件(CDHtmlDialog自动创建了WebBrowser控件)加载的网页中含有错误Javascript代码时默认情况下控件会弹出错误信息提示对话框,相对于用户体验来说这样的提...

对于CDHtmlDialog和JavaScript、HTML配合使用的一些技术总结

CDHtmlDialog可以方便的将网页嵌入对话框,使得在程序设计中人机界面(DHTML网页)与控制逻辑(CDialog)可以很好的分离。   1、屏蔽安全性提示,不再弹出控件是否安全的提示框。 ...
  • pjl1119
  • pjl1119
  • 2012年07月04日 09:18
  • 6002

CDHtmlDialog的基本使用

因为我的部门只有我一个人(无奈之极,只有我一个做C++的,其他的都在做C#),所以我去跟技术顾问讨论我们客户端到底该怎么呈现。他说按照以往(上一套系统)的经验,升级很频繁,建议还是使用内嵌 HTML的...
  • sky04
  • sky04
  • 2012年05月21日 15:08
  • 14805

用MFC实现WebGUI--(CDHtmlDialog)

自从去年年底一次棘手的界面,开始研究用web做界面到现在大约1年,这一年间不是局限在实现层面,也并非一直研究这一个问题,有很多问题其实不是问题,只是自己没有想清楚或者思想没放开。对于一个界面开发人员,...

在CDHTMLDialog中扩展浏览器脚本以及在HTML中增加MFC消息响应

扩展浏览器脚本假设我们创建了一个CMyDHTMLDialog对话框类,包含两个文件MyDHTMLDialog.h和MyDHTMLDialog.cpp1、让类自身支持自动化    EnableAutom...

CDHtmlDialog探索----WebBrowser扩展和网页Javascript错误处理

当WebBrowser控件(CDHtmlDialog自动创建了WebBrowser控件)加载的网页中含有错误Javascript代码时默认情况下控件会弹出错误信息提示对话框,相对于用户体验来说这样的提...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CDHtmlDialog类的使用心得
举报原因:
原因补充:

(最多只允许输入30个字)