Столкнулся с проблемой необходимости отобразить уже загруженный в память html-файл. Из известного мною через IWebBrowser2 возможна загрузка только либо по урлу, либо по пути к файлу на диске. А есть ли какая возможность загрузить из памяти?
А может быть проще не ломать себе голову и сохранить сперва на диск, а затем загрузить?
"FireGuard" <47947@users.rsdn.ru> сообщил/сообщила в новостях следующее:
news:1479710@news.rsdn.ru...
> Столкнулся с проблемой необходимости отобразить уже загруженный в память html-файл. Из известного мною через IWebBrowser2 возможна загрузка только либо по урлу, либо по пути к файлу на диске. А есть ли какая возможность загрузить из памяти?Posted via RSDN NNTP Server 1.9
Здравствуйте, FireGuard, Вы писали:
FG>Столкнулся с проблемой необходимости отобразить уже загруженный в память html-файл. Из известного мною через IWebBrowser2 возможна загрузка только либо по урлу, либо по пути к файлу на диске. А есть ли какая возможность загрузить из памяти?
DHTML, в IWebBrowser2 можно загрузить первоначальную страничку из ресурса того же исполняемого файла (
res://...), в который потом добавляется текст html из памяти... жаль примера под рукой нет
Здравствуйте, FireGuard, Вы писали:
FG>Столкнулся с проблемой необходимости отобразить уже загруженный в память html-файл. Из известного мною через IWebBrowser2 возможна загрузка только либо по урлу, либо по пути к файлу на диске. А есть ли какая возможность загрузить из памяти?
Используй IPersistStreamInit интерфейс. Поищи по форуму ActiveX где-то были готовые примеры.
HRESULT LoadWebBrowserFromStream(IWebBrowser* pWebBrowser, IStream* pStream)
{
HRESULT hr;
IDispatch* pHtmlDoc = NULL;
IPersistStreamInit* pPersistStreamInit = NULL;
// Retrieve the document object.
hr = pWebBrowser->get_Document( &pHtmlDoc );
if ( SUCCEEDED(hr) )
{
// Query for IPersistStreamInit.
hr = pHtmlDoc->QueryInterface( IID_IPersistStreamInit, (void**)&pPersistStreamInit );
if ( SUCCEEDED(hr) )
{
// Initialize the document.
hr = pPersistStreamInit->InitNew();
if ( SUCCEEDED(hr) )
{
// Load the contents of the stream.
hr = pPersistStreamInit->Load( pStream );
}
pPersistStreamInit->Release();
}
}
}
P.S. Запихнуть HTML в IStream можно с помощью CreateStreamOnHGlobal