Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
Попробуй воспользоваться этими функциями:
HRESULT IWebBrowser2::get_HWND(long *pHWND);
BOOL SetWindowText(
HWND hWnd, // handle to window or control
LPCTSTR lpString // title or text
);
А вообще-то это оффтопик.В WIN API или в COM/DCOM/ActiveX надобно.
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
работай как вебсервер, передавай по порту 80.
но учти, что он все равно кешировать в файл будет
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
Из памяти — это на сколько я понимаю из строки?
Тогда примерно так можно:
1.) Снавигировать броузер на about:balnk.
2.) В DocumentComplete сделать что-то вроде :
IHTMLDocumentPtr doc;
//где-то здесь его получаем
doc->write(str);//str - строка содержащая HTML
Re[2]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
27.08.03 06:04
Оценка:
Здравствуйте, Nikto, Вы писали:
N>Здравствуйте, Аноним, Вы писали:
А>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
N>Из памяти — это на сколько я понимаю из строки? N>Тогда примерно так можно: N>1.) Снавигировать броузер на about:balnk. N>2.) В DocumentComplete сделать что-то вроде : N>
N>IHTMLDocumentPtr doc;
N>//где-то здесь его получаем
doc->>write(str);//str - строка содержащая HTML
N>
А нельзя ли по подробнее?
Спасибо
Re[3]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Nikto, Вы писали:
N>>Здравствуйте, Аноним, Вы писали:
А>>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
N>>Из памяти — это на сколько я понимаю из строки? N>>Тогда примерно так можно: N>>1.) Снавигировать броузер на about:balnk. N>>2.) В DocumentComplete сделать что-то вроде : N>>
N>>IHTMLDocumentPtr doc;
N>>//где-то здесь его получаем
doc->>>write(str);//str - строка содержащая HTML
N>>
А>А нельзя ли по подробнее? А>Спасибо
Задавай более конкретные вопросы, с примерами кода... Я ведь не телепат
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, <Аноним>, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
Нууу. Можно скажем свой pluggable protocol написать. Для твоей задачи очень даже просто получиться.
... << RSDN@Home 1.1 beta 1 >>
Народная мудрось
всем все никому ничего(с).
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
Здравствуйте, Аноним, Вы писали:
N>>Задавай более конкретные вопросы, с примерами кода... Я ведь не телепат А>OK. Вот я пишу такой код А>
А>HRESULT hr;
А>// Навигируем в бланк и запрашиваем интерфейсы, m_browser - тот самы активХ, пропущеный через МФЦ :)
А>m_browser.Navigate( "about:blank", NULL, NULL, NULL, NULL );
А>IDispatch* pDisp = (IDispatch*)m_browser.GetDocument();
А>IHTMLDocument2* pDoc;
А>ASSERT( pDisp );
А>hr = pDisp->QueryInterface( UUID(IID_IHTMLDocument2), (void**)&pDoc );
А>ASSERT( pDoc );
А>SAFEARRAY safe;
А>SAFEARRAYBOUND sbound;
А>sbound.cElements = nRealSize;// Размер моего ХТМЛ
А>sbound.lLbound = 0;
А>safe.cbElements = nRealSize;
А>safe.cDims = 0;
А>safe.cLocks = 0;
А>safe.fFeatures = FADF_AUTO;
А>safe.rgsabound[0] = sbound;
А>safe.pvData = mas;// здесь находится сам ХТМЛ, считаный из файла, который нормально просматривается
А>hr = pDoc->write( &safe );// возвращает S_OK, но WebBrowser как был пустой так и осталсяА>
А>И что делать не понятно
Выделенный блок надо выполнять в событии DocumentComplete или после него...
Re[2]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
27.08.03 09:26
Оценка:
Здравствуйте, Max_Akimov, Вы писали:
M_A>Здравствуйте, Аноним, Вы писали:
А>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
M_A>Loading HTML content from a Stream
Взял я кусок мелкософтового кода. Теперь мне не понятно, как мне из обертки CWebBrowser2 получить интерфейс IWebBrowser2. Я сделал так
Но теперь он у меня зацикливается и когда я выхожу из DocumentComplete, он снова вызывается. В общем Windows Must Die какой-то!
Плюс еще GlobalFree( hHTMLText ); вылетает, пришлось его закоментировать.
Re[2]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
27.08.03 09:45
Оценка:
Здравствуйте, Max_Akimov, Вы писали:
M_A>Здравствуйте, Аноним, Вы писали:
А>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
M_A>Loading HTML content from a Stream
И еще одна проблема. Почему-то он воспринимает HTML как текст, т.е. выводит тэги как текст. Странно...
Re[6]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
27.08.03 09:50
Оценка:
Здравствуйте, Nikto, Вы писали:
N>Здравствуйте, Аноним, Вы писали:
N>>>Задавай более конкретные вопросы, с примерами кода... Я ведь не телепат А>>OK. Вот я пишу такой код А>>
А>>HRESULT hr;
А>>// Навигируем в бланк и запрашиваем интерфейсы, m_browser - тот самы активХ, пропущеный через МФЦ :)
А>>m_browser.Navigate( "about:blank", NULL, NULL, NULL, NULL );
А>>IDispatch* pDisp = (IDispatch*)m_browser.GetDocument();
А>>IHTMLDocument2* pDoc;
А>>ASSERT( pDisp );
А>>hr = pDisp->QueryInterface( UUID(IID_IHTMLDocument2), (void**)&pDoc );
А>>ASSERT( pDoc );
А>>SAFEARRAY safe;
А>>SAFEARRAYBOUND sbound;
А>>sbound.cElements = nRealSize;// Размер моего ХТМЛ
А>>sbound.lLbound = 0;
А>>safe.cbElements = nRealSize;
А>>safe.cDims = 0;
А>>safe.cLocks = 0;
А>>safe.fFeatures = FADF_AUTO;
А>>safe.rgsabound[0] = sbound;
А>>safe.pvData = mas;// здесь находится сам ХТМЛ, считаный из файла, который нормально просматривается
А>>hr = pDoc->write( &safe );// возвращает S_OK, но WebBrowser как был пустой так и осталсяА>
А>>И что делать не понятно
N>Выделенный блок надо выполнять в событии DocumentComplete или после него...
Не помогает
Re[7]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
N>>Выделенный блок надо выполнять в событии DocumentComplete или после него...
А>Не помогает
Что значит не помогает? В чем конкретно проблема?
Re[8]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
27.08.03 10:12
Оценка:
Здравствуйте, Nikto, Вы писали:
N>Здравствуйте, Аноним, Вы писали:
N>>>Выделенный блок надо выполнять в событии DocumentComplete или после него...
А>>Не помогает
N>Что значит не помогает? В чем конкретно проблема?
Проблема в том, что окно браузера остается пустым.
Там дальше по дискуссии меня отослали к статье мелкософта, но при том подходе браузер мой ХТМЛ отображает как текст
Re[3]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
А>Но теперь он у меня зацикливается и когда я выхожу из DocumentComplete, он снова вызывается. В общем Windows Must Die какой-то! А>Плюс еще GlobalFree( hHTMLText ); вылетает, пришлось его закоментировать.
DocumentComplete вызывается по окончанию загрузки документа. Т.е. последовательность действий примерно следующая
Делаем Navigate(About:blank) -> DocumentComplete -> в нем загружаем свой документ из стрима -> после его загрузки опять DocumentComplete. -> и т.д.
После успешной загрузки нужно выставить флаг, и больше документ не грузить.
Re[4]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От:
Аноним
Дата:
27.08.03 14:58
Оценка:
Здравствуйте, Max_Akimov, Вы писали:
M_A>Здравствуйте, Аноним, Вы писали:
А>>Взял я кусок мелкософтового кода. Теперь мне не понятно, как мне из обертки CWebBrowser2 получить интерфейс IWebBrowser2. Я сделал так А>>
А>>Но теперь он у меня зацикливается и когда я выхожу из DocumentComplete, он снова вызывается. В общем Windows Must Die какой-то! А>>Плюс еще GlobalFree( hHTMLText ); вылетает, пришлось его закоментировать.
M_A>DocumentComplete вызывается по окончанию загрузки документа. Т.е. последовательность действий примерно следующая M_A>Делаем Navigate(About:blank) -> DocumentComplete -> в нем загружаем свой документ из стрима -> после его загрузки опять DocumentComplete. -> и т.д.
M_A>После успешной загрузки нужно выставить флаг, и больше документ не грузить.
А что за флаг, если не секрет? А то я сейчас в ручную такой флаг сделал? Есть ли автоматизация флагопостановки?
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
В BCB Это выглядит так:
TMemoryStream *stm = new TMemoryStream();
((TBlobField *)DM->MesHtm->FieldByName("CONTAINMENT"))->SaveToStream(stm); //Поток - источник HTML
IPersistStreamInit *psi;
stm->Seek(0,0);
TStreamAdapter *sa = new TStreamAdapter(stm,soReference);
if (SUCCEEDED(NewMessage->WB->Document->QueryInterface(IID_IPersistStreamInit,(void **)&psi)))
{
psi->Load(*sa);//Собственно, загружаем из потока.
}
В VC, скорее всего, аналогично.
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
Здравствуйте, mik1, Вы писали:
А>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?
M>Иногда не мешает читать матчасть (MSDN Magazine, собственно — за август 2003). M>Вот где по этому поводу выссказывается классик: M>http://msdn.microsoft.com/msdnmag/issues/03/08/CQA/
Проблема в том, что Outlook-овские HTML-сообщения не отображаются таким образом. Получилось только через Memory Stream. Собственно, интерфейс для этого так и предназначен, я так понимаю. )
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...