如何在CDHtmlDialog中引用html资源的方法

在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的继承类里添加一个函数来处理。

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/



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都可以正常载入

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值