我IHTMLDocument2::write()
按照此处所述使用,以便将 HTML 从内存加载到IWebBrowser2
实例中。代码如下所示:
#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)。但是,找不到任何链接的资源(图像等),因为没有可以从中加载它们的“基本 URL”。
如何设置文档的基本 URL,以便如果“http://bar.com/baz/foo.png”中有图像 foo.png,则可以通过“baz/foo”的 href 找到该图像.png”在加载的文档中?