我使用IHTMLDocument2::write()
,如here所述,以便将HTML从内存加载到IWebBrowser2
实例中。代码如下所示:如何为使用IWebBrowser2从内存加载的HTML文档设置“基本URL”?
#include <MsHTML.h>
void CMyDlg::WriteHTML(const wchar_t* html)
{
IDispatch* pHtmlDoc = m_explorer.get_Document();
if (!pHtmlDoc)
return;
CComPtr<IHTMLDocument2> doc2;
doc2.Attach((IHTMLDocument2*)pHtmlDoc);
if (!doc2)
return;
SAFEARRAY* psaStrings = SafeArrayCreateVector(VT_VARIANT, 0, 1);
if (!psaStrings)
return;
BSTR bstr = SysAllocString(html);
if (bstr)
{
VARIANT* param;
HRESULT hr = SafeArrayAccessData(psaStrings, (LPVOID*)¶m);
if (SUCCEEDED(hr))
{
param->vt = VT_BSTR;
param->bstrVal = bstr;
hr = SafeArrayUnaccessData(psaStrings);
if (SUCCEEDED(hr))
{
doc2->write(psaStrings);
doc2->close();
}
}
}
if (psaStrings)
SafeArrayDestroy(psaStrings);
}
这可以像我期望的那样工作(HTML被加载)。然而,没有任何链接的资源(图片等)可以找到,因为没有“base URL”来加载它们。
如何设置文档的基本URL,以便如果在“http://bar.com/baz/foo.png”处有图像foo.png,则可以通过加载文档中的“baz/foo.png”href找到该图像?
谢谢。我不知道 标记,并插入 解决了我的问题。 –
如果您正在从根目录运行网站,则可能需要尝试“/”而不是绝对路径。它应该可以工作,并且是推荐的方式。 –
这对我不起作用。我认为,因为我的代码在本地运行,并且链接位于远程服务器上,所以基础需要成为远程服务器。 –