下面这段代码可以显示内存中的html,但只能第一次显示正常,比如点击一个菜单项,调用该函数显示一段内存中的html,第一次正常,再点击一次,显示就是空白页了void CHtmlTestView::NavigateMemHtml(CString& szHtml)
{
// 显示空白页
Navigate2(_T("about:blank"), NULL, NULL);
// 取得控件的htmldocument对象
IDispatch* pDocument = GetHtmlDocument();

if (NULL == pDocument)
{
// 取htmldocument对象失败
return;
}

// 取得文档中的IPersistStreamInit对象
CComPtr<IPersistStreamInit> pPersistStreamInit;
HRESULT hr = pDocument->QueryInterface(IID_IPersistStreamInit, (void**)&pPersistStreamInit);

if (FAILED(hr))
{
return;
}

// 分配内存
LPTSTR lpMem = (LPTSTR)::GlobalAlloc(GPTR, (szHtml.GetLength() + 1) * sizeof(TCHAR));

if (NULL == lpMem)
{
// 内存分配失败
return;
}

::lstrcpy(lpMem, (LPCTSTR)szHtml);

// 创建流对象
CComPtr<IStream> pStream;
hr = ::CreateStreamOnHGlobal(lpMem, TRUE, &pStream);

if (FAILED(hr))
{
// 流对象创建失败
return;
}

hr = pPersistStreamInit->InitNew();

if (!SUCCEEDED(hr))
{
return;
}

hr = pPersistStreamInit->Load(pStream);

if (!SUCCEEDED(hr))
{
return;
}
}