Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Аноним  
Дата: 26.08.03 14:52
Оценка:
Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?

26.08.03 19:13: Перенесено модератором из 'C/C++' — ПК
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: WoldemaR Россия  
Дата: 26.08.03 15:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти 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 - вывод ХТМЛ из памяти ????
От: ilnar Россия  
Дата: 26.08.03 15:27
Оценка: -1
Здравствуйте, Аноним, Вы писали:

А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?


работай как вебсервер, передавай по порту 80.
но учти, что он все равно кешировать в файл будет
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Nikto Россия  
Дата: 27.08.03 03:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти 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 Россия  
Дата: 27.08.03 06:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, 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 - вывод ХТМЛ из памяти ????
От: Tom Россия http://www.RSDN.ru
Дата: 27.08.03 06:59
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?


Нууу. Можно скажем свой pluggable protocol написать. Для твоей задачи очень даже просто получиться.
... << RSDN@Home 1.1 beta 1 >>
Народная мудрось
всем все никому ничего(с).
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Max_Akimov Россия  
Дата: 27.08.03 07:49
Оценка: 5 (1)
Здравствуйте, Аноним, Вы писали:

А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?


Loading HTML content from a Stream
Re[4]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Аноним  
Дата: 27.08.03 07:50
Оценка:
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 как был пустой так и остался

И что делать не понятно
Re[5]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Nikto Россия  
Дата: 27.08.03 07:54
Оценка:
Здравствуйте, Аноним, Вы писали:

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. Я сделал так
m_pBrowser = (IWebBrowser2*)m_browser.GetApplication();

Но теперь он у меня зацикливается и когда я выхожу из 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 - вывод ХТМЛ из памяти ????
От: Nikto Россия  
Дата: 27.08.03 09:53
Оценка:
Здравствуйте, Аноним, Вы писали:


N>>Выделенный блок надо выполнять в событии DocumentComplete или после него...


А>Не помогает


Что значит не помогает? В чем конкретно проблема?
Re[8]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Аноним  
Дата: 27.08.03 10:12
Оценка:
Здравствуйте, Nikto, Вы писали:

N>Здравствуйте, Аноним, Вы писали:



N>>>Выделенный блок надо выполнять в событии DocumentComplete или после него...


А>>Не помогает


N>Что значит не помогает? В чем конкретно проблема?

Проблема в том, что окно браузера остается пустым.
Там дальше по дискуссии меня отослали к статье мелкософта, но при том подходе браузер мой ХТМЛ отображает как текст
Re[3]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Max_Akimov Россия  
Дата: 27.08.03 14:38
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Взял я кусок мелкософтового кода. Теперь мне не понятно, как мне из обертки CWebBrowser2 получить интерфейс IWebBrowser2. Я сделал так

А>
А>m_pBrowser = (IWebBrowser2*)m_browser.GetApplication();
А>

А>Но теперь он у меня зацикливается и когда я выхожу из 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. Я сделал так

А>>
А>>m_pBrowser = (IWebBrowser2*)m_browser.GetApplication();
А>>

А>>Но теперь он у меня зацикливается и когда я выхожу из DocumentComplete, он снова вызывается. В общем Windows Must Die какой-то!
А>>Плюс еще GlobalFree( hHTMLText ); вылетает, пришлось его закоментировать.


M_A>DocumentComplete вызывается по окончанию загрузки документа. Т.е. последовательность действий примерно следующая

M_A>Делаем Navigate(About:blank) -> DocumentComplete -> в нем загружаем свой документ из стрима -> после его загрузки опять DocumentComplete. -> и т.д.

M_A>После успешной загрузки нужно выставить флаг, и больше документ не грузить.


А что за флаг, если не секрет? А то я сейчас в ручную такой флаг сделал? Есть ли автоматизация флагопостановки?
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Saddam Россия http://saddam.narod.ru
Дата: 08.09.03 08:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти 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  
Дата: 08.09.03 08:40
Оценка:
А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?

Иногда не мешает читать матчасть (MSDN Magazine, собственно — за август 2003).
Вот где по этому поводу выссказывается классик:
http://msdn.microsoft.com/msdnmag/issues/03/08/CQA/
Re[2]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Saddam Россия http://saddam.narod.ru
Дата: 08.09.03 09:02
Оценка:
Здравствуйте, mik1, Вы писали:

А>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?


M>Иногда не мешает читать матчасть (MSDN Magazine, собственно — за август 2003).

M>Вот где по этому поводу выссказывается классик:
M>http://msdn.microsoft.com/msdnmag/issues/03/08/CQA/
Проблема в том, что Outlook-овские HTML-сообщения не отображаются таким образом. Получилось только через Memory Stream. Собственно, интерфейс для этого так и предназначен, я так понимаю. )
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re[3]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: mik1  
Дата: 08.09.03 09:08
Оценка:
Здравствуйте, Saddam, Вы писали:

S>Здравствуйте, mik1, Вы писали:


А>>>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти Navigate не работает. Что делать?


M>>Иногда не мешает читать матчасть (MSDN Magazine, собственно — за август 2003).

M>>Вот где по этому поводу выссказывается классик:
M>>http://msdn.microsoft.com/msdnmag/issues/03/08/CQA/

S>Проблема в том, что Outlook-овские HTML-сообщения не отображаются таким образом. Получилось только через Memory Stream. Собственно, интерфейс для этого так и предназначен, я так понимаю. )


Странно, конечно, но да ладно. Запомним.
Сам я вообще в VB все это дело писал. Всего 4 строчки кода, если строка с html уже подготовлена
Re[2]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Аноним  
Дата: 08.09.03 10:44
Оценка:
Благодарю всех за ответы. Благодаря им я разобрался... почти. Осталась одна проблема — Windows 98!
В общем пишу я так:
void CHeritageDlg::OnDocumentComplete( IDispatch* pDisp, VARIANT* URL )
{
    HRESULT     hr;                         // Control variable
    IUnknown*   pUnkBrowser = NULL;         // Browser IUnknown
    IUnknown*   pUnkDisp    = NULL;         // Dispatch IUnknown
    IStream*    pStream     = NULL;         // Load Stream Interface
    HGLOBAL     hHTMLText;                  // Handle to Global HTML array

//    MessageBox( NULL, "OnDocumentComplete", "Started", MB_OK );
    if ( m_bBrowserLoad )
    {                                       // If we're allowed to load...
        m_bBrowserLoad = false;             // Do not load again!!!
        hr = m_pIWebBrowser->QueryInterface( IID_IUnknown,  
                                             (void**)&pUnkBrowser );
        if ( SUCCEEDED(hr) )
        {
            hr = pDisp->QueryInterface( IID_IUnknown,  (void**)&pUnkDisp );
            if ( SUCCEEDED(hr) )
            {
                if ( pUnkBrowser == pUnkDisp )
                {
                    hHTMLText = GlobalAlloc( GPTR, m_nHTMLSize + 2 );
                    if ( hHTMLText )
                    {
                        memcpy( hHTMLText, m_pOutputHTML, m_nHTMLSize + 1 );
                        hr = CreateStreamOnHGlobal( hHTMLText, FALSE, &pStream );
                        if ( SUCCEEDED(hr) )
                        {
                            LoadWebBrowserFromStream( m_pIWebBrowser, 
                                                      pStream  );
                            pStream->Release();
                        }
                    }
                }
                pUnkDisp->Release();
            }
            pUnkBrowser->Release();
        }
    }
//    MessageBox( NULL, "OnDocumentComplete", "Finished", MB_OK );
}

HRESULT CHeritageDlg::LoadWebBrowserFromStream( IWebBrowser* pWebBrowser, 
                                                IStream*     pStream )
{
    HRESULT             hr;
    IDispatch*          pHtmlDoc = NULL;
    IPersistStreamInit* pPersistStreamInit = NULL;
    hr = m_pIWebBrowser->get_Document( &pHtmlDoc );
    ATLASSERT(pStream);
    if ( SUCCEEDED(hr) )
    {
        hr = pHtmlDoc->QueryInterface( IID_IPersistStreamInit,  
                                       (void**)&pPersistStreamInit );
        if ( SUCCEEDED(hr) )
        {
            //hr = pPersistStreamInit->InitNew();
            if ( SUCCEEDED(hr) )
            {
                hr = pPersistStreamInit->Load( pStream );          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
                if (hr)
                {
                    MessageBox( NULL, "Load(pStream) - FAILURE", "Load(pStream) - FAILURE", MB_OK );
                }
                else 
                    MessageBox( NULL, "Hi", "Load(pStream) - SUCCEEDED", MB_OK );
            }
            pPersistStreamInit->Release();
        }
    }

    return hr;
}

Под 2000-й и ХР все проходит. В 98-й винде у нас на тестовой машине стоит 4-й эксплорер. Но все проходит кроме строки с !!!!!!!!!!!!!!!!!!!!!!!!!!! Возвращает она E_UNEXPECTED. Причем, в 2000-й винде все работает даже если раскоментировать строку
hr = pPersistStreamInit->InitNew();
несмотря на то, что оно должно этот самый E_UNEXPECTED возвращать. В 98-й по любому ошибка
Кстати выше приведенный код взят с мелкософтового МСДН сайта.
Re[3]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Saddam Россия http://saddam.narod.ru
Дата: 08.09.03 11:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>[/code]

А>Под 2000-й и ХР все проходит. В 98-й винде у нас на тестовой машине стоит 4-й эксплорер. Но все проходит кроме строки с !!!!!!!!!!!!!!!!!!!!!!!!!!! Возвращает она E_UNEXPECTED. Причем, в 2000-й винде все работает даже если раскоментировать строку
А>hr = pPersistStreamInit->InitNew();
А>несмотря на то, что оно должно этот самый E_UNEXPECTED возвращать. В 98-й по любому ошибка
А>Кстати выше приведенный код взят с мелкософтового МСДН сайта.
В BCB надо передавать не указатель на поток, а поток. Может поможет?

hr = pPersistStreamInit->Load( *pStream );
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re[4]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Аноним  
Дата: 08.09.03 11:56
Оценка:
Здравствуйте, Saddam, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


А>>[/code]

А>>Под 2000-й и ХР все проходит. В 98-й винде у нас на тестовой машине стоит 4-й эксплорер. Но все проходит кроме строки с !!!!!!!!!!!!!!!!!!!!!!!!!!! Возвращает она E_UNEXPECTED. Причем, в 2000-й винде все работает даже если раскоментировать строку
А>>hr = pPersistStreamInit->InitNew();
А>>несмотря на то, что оно должно этот самый E_UNEXPECTED возвращать. В 98-й по любому ошибка
А>>Кстати выше приведенный код взят с мелкософтового МСДН сайта.
S>В BCB надо передавать не указатель на поток, а поток. Может поможет?

S>
S>hr = pPersistStreamInit->Load( *pStream );          
S>

Нет, товарищ, ты что-то путаешь. Этот метод объявлен так
STDMETHOD(Load)( LPSTREAM pStm );

А если написать так как ты написал, то компилятор пишет

error C2664: 'IPersistStreamInit::Load' : cannot convert parameter 1 from 'IStream' to 'LPSTREAM'
Re[5]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Saddam Россия http://saddam.narod.ru
Дата: 08.09.03 13:16
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Saddam, Вы писали:


S>>Здравствуйте, Аноним, Вы писали:


А>>>[/code]

А>>>Под 2000-й и ХР все проходит. В 98-й винде у нас на тестовой машине стоит 4-й эксплорер. Но все проходит кроме строки с !!!!!!!!!!!!!!!!!!!!!!!!!!! Возвращает она E_UNEXPECTED. Причем, в 2000-й винде все работает даже если раскоментировать строку
А>>>hr = pPersistStreamInit->InitNew();
А>>>несмотря на то, что оно должно этот самый E_UNEXPECTED возвращать. В 98-й по любому ошибка
А>>>Кстати выше приведенный код взят с мелкософтового МСДН сайта.
S>>В BCB надо передавать не указатель на поток, а поток. Может поможет?

S>>
S>>hr = pPersistStreamInit->Load( *pStream );          
S>>

А>Нет, товарищ, ты что-то путаешь. Этот метод объявлен так
А>
А>STDMETHOD(Load)( LPSTREAM pStm );
А>

А>А если написать так как ты написал, то компилятор пишет

А>error C2664: 'IPersistStreamInit::Load' : cannot convert parameter 1 from 'IStream' to 'LPSTREAM'

Значит враперы в VC и BCB реализованы по-разному
Попробуй на 98-ю поставить 5-й эксплорер.
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re[6]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Аноним  
Дата: 08.09.03 13:27
Оценка:
А>>error C2664: 'IPersistStreamInit::Load' : cannot convert parameter 1 from 'IStream' to 'LPSTREAM'
S>Значит враперы в VC и BCB реализованы по-разному
S>Попробуй на 98-ю поставить 5-й эксплорер.

Я думаю 6-й сразу ставить. Ты мне скажи, его можно поставить так, чтобы юзер не видел сам процесс установки?
Re[7]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Saddam Россия http://saddam.narod.ru
Дата: 08.09.03 14:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>>error C2664: 'IPersistStreamInit::Load' : cannot convert parameter 1 from 'IStream' to 'LPSTREAM'

S>>Значит враперы в VC и BCB реализованы по-разному
S>>Попробуй на 98-ю поставить 5-й эксплорер.

А>Я думаю 6-й сразу ставить. Ты мне скажи, его можно поставить так, чтобы юзер не видел сам процесс установки?

Попытаться интегрировать в инсталяху 98
В твою инсталяху — попытаться каким-нить тракером отследить, что ставит MSIE.
А вообще — обычно таки вещи пишутся в требованиях. Типа, нуна для моей софтины тока 98-я с 6-м експлорером, и хоть ты тресни!
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: eugene32  
Дата: 08.09.03 15:15
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

А>Собственно вопрос: как вывести ХТМЛ, который лежит не в файле, а в памяти. В файл сохранять нельзя, а из памяти 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 );
Re[2]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Saddam Россия http://saddam.narod.ru
Дата: 08.09.03 17:19
Оценка:
Здравствуйте, eugene32, Вы писали:

E>... Я тут читал все нитки по теме и, понял, что полемика по оной ушла далеко от ответа. Суть проблемы не столь уж сложна. У меня тоже была такая проблема и, я накрапал кое какой тестовый код.


Аналогичный код работает
Автор: eugene32
Дата: 08.09.03
на BCB.
Лениво было пробовать на VC.
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re[3]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Аноним  
Дата: 09.09.03 06:59
Оценка:
Здравствуйте, Saddam, Вы писали:

S>Здравствуйте, eugene32, Вы писали:


E>>... Я тут читал все нитки по теме и, понял, что полемика по оной ушла далеко от ответа. Суть проблемы не столь уж сложна. У меня тоже была такая проблема и, я накрапал кое какой тестовый код.

S>
S>Аналогичный код работает
Автор: eugene32
Дата: 08.09.03
на BCB.

S>Лениво было пробовать на VC.
Да оно у меня уже давно работает под 2000-й виндой. Зато по 98-й на 4-м эксплорере нет! И хоть ты тресни
Под виндовс-линолиум с 5-м эксплорером тож работает. В общем чую я попал, прийдется либо убеждать начальство тягать эксплорер за собой либо переколбасивать весь проект
Re[4]: Microsoft Web Browser - вывод ХТМЛ из памяти ????
От: Saddam Россия http://saddam.narod.ru
Дата: 09.09.03 08:31
Оценка:
Здравствуйте, Аноним, Вы писали:

E>>>... Я тут читал все нитки по теме и, понял, что полемика по оной ушла далеко от ответа. Суть проблемы не столь уж сложна. У меня тоже была такая проблема и, я накрапал кое какой тестовый код.

S>>
S>>Аналогичный код работает
Автор: eugene32
Дата: 08.09.03
на BCB.

S>>Лениво было пробовать на VC.
А>Да оно у меня уже давно работает под 2000-й виндой. Зато по 98-й на 4-м эксплорере нет! И хоть ты тресни
А>Под виндовс-линолиум с 5-м эксплорером тож работает. В общем чую я попал, прийдется либо убеждать начальство тягать эксплорер за собой либо переколбасивать весь проект
Сдается мне, что в MSIE 4 такого интерфейса нет . Так, что тут ничего не попишешь.
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.