Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > CHtmlView Относительный путь при загрузке


Автор: The Thing 19.3.2008, 15:09
Ситуация такая, создаю документ на основе шаблонов. Т.е. собираю код из кусков, относительно переданных параметров.
1. Гружу Navigate2( L"about:blank" );
2. Загружаю код.

Код

//Загружаем HTML код
HRESULT CBasePage::LoadHtml(CString strHtml)
{
    CComPtr<IDispatch> pDocDispatch = GetHtmlDocument();
    if( !pDocDispatch )
        return S_FALSE;
    
    CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2> pHtmlDocument2(pDocDispatch);
    if( !pHtmlDocument2 )
        return S_FALSE;

    HRESULT hr;
    SAFEARRAY* psa = SafeArrayCreateVector(VT_VARIANT, 0, 1);

    if( NULL != psa )
    {
        VARIANT *param;
        BSTR bsData = SysAllocString( strHtml );
        hr =  SafeArrayAccessData(psa, (LPVOID*)&param);

        if( SUCCEEDED( hr ) )
        {
            CComVariant vName("HistroyName");

            //hr = pHtmlDocument2->open(L"text/html",vName,CComVariant(),CComVariant(),NULL);

            if( SUCCEEDED(hr) )
            {
                param->vt = VT_BSTR;
                param->bstrVal = (BSTR)bsData;

                hr = pHtmlDocument2->write(psa);

                hr = pHtmlDocument2->close();
            }
        }

        SysFreeString(bsData);
        if (psa != NULL) {
            SafeArrayDestroy(psa);
        }
    }

    return hr;
}
 


3. Страница грузится, но все пути которые были относительные имеют вид: "about:blankresource.files/tab_income_pas.gif"
вместо "files://d:|.../resource.files/tab_income_pas.gif"

Помогите пожалуйста решить эту проблему.

Автор: xvr 20.3.2008, 15:41
Цитата(The Thing @ 19.3.2008,  15:09)
Ситуация такая, создаю документ на основе шаблонов. Т.е. собираю код из кусков, относительно переданных параметров.
1. Гружу Navigate2( L"about:blank" );
2. Загружаю код.

Код

//Загружаем HTML код
HRESULT CBasePage::LoadHtml(CString strHtml)
{
    CComPtr<IDispatch> pDocDispatch = GetHtmlDocument();
    if( !pDocDispatch )
        return S_FALSE;
    
    CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2> pHtmlDocument2(pDocDispatch);
    if( !pHtmlDocument2 )
        return S_FALSE;

    HRESULT hr;
    SAFEARRAY* psa = SafeArrayCreateVector(VT_VARIANT, 0, 1);

    if( NULL != psa )
    {
        VARIANT *param;
        BSTR bsData = SysAllocString( strHtml );
        hr =  SafeArrayAccessData(psa, (LPVOID*)&param);

        if( SUCCEEDED( hr ) )
        {
            CComVariant vName("HistroyName");

            //hr = pHtmlDocument2->open(L"text/html",vName,CComVariant(),CComVariant(),NULL);

            if( SUCCEEDED(hr) )
            {
                param->vt = VT_BSTR;
                param->bstrVal = (BSTR)bsData;

                hr = pHtmlDocument2->write(psa);

                hr = pHtmlDocument2->close();
            }
        }

        SysFreeString(bsData);
        if (psa != NULL) {
            SafeArrayDestroy(psa);
        }
    }

    return hr;
}
 


3. Страница грузится, но все пути которые были относительные имеют вид: "about:blankresource.files/tab_income_pas.gif"
вместо "files://d:|.../resource.files/tab_income_pas.gif"

Помогите пожалуйста решить эту проблему.

Тебе надо сначала загрузить HTML вида

Код

<HTML>
<HEAD>
  <BASE HREF="file://d:|.../"/>
</HEAD>
<BODY/>
</HTML>

а уже потом грузить в это окно документ в виде строки (кстати, он должен быть без заголовка)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)