Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
setter1
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 36
1

Загрузка html в cppwebbrowser

23.06.2011, 11:57. Просмотров 2477. Ответов 4
Метки нет (Все метки)

Вот у меня есть код загрузки html кода в браузер:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    TMemoryStream *stm = new TMemoryStream();
    html = "<b>Hello World!</b>";
    stm->Write(html.c_str(), html.Length());
    stm->Seek(0,0);
    IPersistStreamInit *psi;
    TStreamAdapter *sa = new TStreamAdapter(stm,soReference);
    CppWebBrowser1->Navigate(WideString("about:blank").c_bstr());
    if(SUCCEEDED(CppWebBrowser1->Document->QueryInterface(IID_IPersistStreamInit,(void **)&psi)))
    {
        psi->Load(*sa);
        psi->Release();
    }
    delete stm;
Все прекрасно работает. НО если выполнить данный код повторно, то страница в браузере сбрасывается, т.е. становится просто пустой.
Что не так?

И вот парадокс, если перед psi->Load(*sa); поставить ShowMessage, то все прекрасно работает и загружает html при повторном использовании О_о
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2011, 11:57
Ответы с готовыми решениями:

Html в cppwebbrowser
Как открыть html файл в cppwebbrowser который расположен в папке проекта

HTML из ресурсов в CppWebBrowser
Здравствуйте!! Необходимо, чтобы из ресурсов экзешника загружались web-страницы. Написал такой...

Загрузка htm файла в CppWebBrowser (RAD 2010)
Поместил на форму TreeView и CppWebBrowser. Работаю в C++ Builder 2010. Не могу загрузить htm файл...

CppWebBrowser. Загрузка веб-страницы в целевой Фрейм
Доброго времени суток. Возникла у меня такая проблема, на форме у меня есть 2 кнопки и...

CppWebBrowser - открыть файл HTML
Нужно открыть готовый HTML-файл в CppWebBrowser! Помогите с кодом, пожалуйста.....

4
Sasha
4932 / 2396 / 530
Регистрация: 05.06.2008
Сообщений: 7,499
Записей в блоге: 3
23.06.2011, 13:04 2
Может тебе стоит по удалять некоторые объекты класса
0
Maluda
1259 / 586 / 110
Регистрация: 18.08.2009
Сообщений: 813
Завершенные тесты: 1
23.06.2011, 14:40 3
Командой
Цитата Сообщение от setter1 Посмотреть сообщение
psi->Release();
ты закрываешь интерфейс,
это всё равно, что в обычном классе вызвать delete,
так что вызывай Release() позже, когда полностью закончишь работу со своим интерфейсом
0
setter1
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 36
23.06.2011, 15:51  [ТС] 4
Цитата Сообщение от Maluda Посмотреть сообщение
Командой

ты закрываешь интерфейс,
это всё равно, что в обычном классе вызвать delete,
так что вызывай Release() позже, когда полностью закончишь работу со своим интерфейсом
а причем тут это, я говорю если весь этот код повторно выполнить, а
IPersistStreamInit *psi; создает заново, и не важно, был он закрыт или нет, тем более если он вызывается из функции.
Проблема мне кажется в "CppWebBrowser1->Navigate(WideString("about:blank").c_bstr());" - именно эта строка сначала очищает браузер, а последующая строка не загружает код в браузер.

Sasha, немного не понял, о чем вы?
0
Maluda
1259 / 586 / 110
Регистрация: 18.08.2009
Сообщений: 813
Завершенные тесты: 1
23.06.2011, 18:00 5
Добавить вот это и будет работать
C++
1
Application->ProcessMessages();
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TMemoryStream *stm = new TMemoryStream();
const AnsiString html = "<b>Hello World!</b>";
stm->Write(html.c_str(), html.Length());
stm->Seek(0, 0);
IPersistStreamInit *psi;
TStreamAdapter *sa = new TStreamAdapter(stm, soReference);
CppWebBrowser1->Navigate(WideString("about:blank").c_bstr());
if (SUCCEEDED(CppWebBrowser1->Document->QueryInterface(IID_IPersistStreamInit,
            (void**) & psi))) {
    // добавить вот это
    Application->ProcessMessages();
 
    psi->Load(*sa);
    psi->Release();
}
delete stm;
Добавлено через 2 минуты
На счёт Release() - я был не прав, наоборот, обязательно надо вызывать Release(),
так как QueryInerface увеличивает подсчёт ссылок на этот СОМ-интерфейс
1
23.06.2011, 18:00
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2011, 18:00

HTML в программе с помощю CppWebBrowser
Как с помощю CppWebBrowser загрузить в программу HTML-страницу? Можно както сделать, чтобы она...

Местоположение HTML файла в CppWebBrowser
Проблема следующая надо отобразить html страницу через cpp браузер, страница находится в папке...

HTML-страничка напрямую в CppWebBrowser
У меня два вопроса: 1. как сделать динамическую веб-страничку и загрузить напрямую в CppWebBrowser...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru