Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
... Я тут читал все нитки по теме и, понял, что полемика по оной ушла далеко от ответа. Суть проблемы не столь уж сложна. У меня тоже была такая проблема и, я накрапал кое какой тестовый код.
/VC-6, ProjectType — Simple Dialog/
m_WB is CWebBrowser2 control
void Dia::SomeMethod()
{
// TODO: Add your control notification handler code here
CComPtr<IDispatch> di= m_WB.GetDocument();
CComPtr<IHTMLDocument2> doc2;
if(di) di->QueryInterface( __uuidof(IHTMLDocument2),(void**)&doc2 );
if(doc2)
{
CComPtr<IPersistStreamInit> str_init;
doc2->QueryInterface(__uuidof(IPersistStreamInit),(void**)&str_init);
if(str_init)
{
str_init->InitNew();
const char* s = "<html><body>ONE: <INPUT ></body></html>";
char* x = (char*)::GlobalAlloc(GPTR,strlen(s)+1);
if(x)
{
*x=(char)0;
strcat(x,s);
CComPtr<IStream> stm;
::CreateStreamOnHGlobal((HGLOBAL)x,TRUE,&stm);
if(!stm)
::GlobalFree((HGLOBAL)x);
else
str_init->Load(stm);
}
}
}
}
Ну естественнов OnInitDialog() нужно вставить строки
CComVariant V("about:blank");
m_WB.Navigate2( &V, NULL, NULL, NULL, NULL );