设为首页 - 加入收藏 - 网站地图 欢迎加QQ群 :14364084
当前位置:谭博的博客 > 编程语言 > c > 正文

CDHtmlDialog加载图片使用相对路径的有关问题

时间:2014-03-02 19:27 来源:未知 标签: 作者:谭博 阅读:
CDHtmlDialog加载图片使用相对路径的问题
在我的htm中是这样设置背景图片的
background-image:url(xxxxx);

1.我在网上搜了一下,我按照这个页面上的方法做了http://hi.baidu.com/catalove/blog/item/83e7962b446007fce7cd4008.html
写成
background-image:url(res://#130); //130是我resource.h里面这个背景图的资源id。
失败。。。。

2.直接写相对路径
background-image:url(../xd/bg.gif);
失败。。。。

请问怎么做?
 

------解决方案--------------------
在 html head中加上base属性即可使用相对路径 http://www.w3school.com.cn/tags/tag_base.asp 
------解决方案--------------------
呵呵,我曾经也遇到这个问题,不过都很好的解决了,外置CSS或JS文件也一样的,贴上我写的代码,m_pDhtmlDlg为CDhtmDlg的指针
typedef enum InnerFileType
{
    FileTypeJavaScript,
    FileTypeCSS,
    FilePathBackground,
};

/*设置外链JS,CSS文件或背景图片文件路径,bRelative为TRUE时,filePath指定为相对于可执行文件的路径,否则为绝对路径。如果设置了错误路径,会导致javascript运行出错,css无效。*/
BOOL CDhtmlHelp::SetJSOrCSSFilePath(InnerFileType type, LPCTSTR eleID, LPCTSTR filePath, BOOL bRelative /*= TRUE*/ )
{
    HRESULT hr;
    IHTMLElement *pEle;
    hr = m_pDhtmlDlg->GetElement( eleID, &pEle );
    if ( FAILED(hr) )
    {
        return FALSE;
    }
    CComBSTR name;
    if ( type == FileTypeJavaScript )
    {
        name = _T("src");
    }
    else if ( type == FileTypeCSS )
    {
        name = _T("href");
    }
    else if ( type == FilePathBackground)
    {
        name = _T("background");
    }
    else 
    {
        return FALSE;
    }
    
    TCHAR tszPath[MAX_PATH] = {0};
    if ( !bRelative )
    {
        _tcscpy(tszPath,filePath);
    }
    else
    {
        if ( 0 == GetModuleFileName( NULL, tszPath, MAX_PATH ) )
        {
            return FALSE;
        }

        //取exe文件所在目录
        TCHAR *pItalic = _tcsrchr( tszPath, _T('\\') );
        if ( pItalic == NULL )
        {
            return FALSE;
        }
        pItalic++;//指向斜杠后面一个字符
        memset( pItalic, _T('\0'), _tcslen(pItalic)*sizeof(TCHAR) );
        _tcscat( tszPath, filePath );
    }
    
    CComBSTR value(tszPath);
    VARIANT str;
    str.vt = VT_BSTR;
    str.bstrVal = value;
    hr = pEle->setAttribute( name, str,0 );
    if ( FAILED(hr) )
    {
        return FALSE;
    }
    return TRUE;
} 
C/C++ code
 
 

 

关注微信公众号

微信扫一扫,打赏我

热评文章
    内容不错,支持一下
    评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)