но в общем, вопрос изначально стоит по другому.
так как единственное что мы можем передать из терминала в DLL это хендл окна.
то необходимо используя этот хендл создать просмотр HTML.
стандартные элементы управления на MFC типа кнопок, текста, или работа с CDC передаваемого окна. Всё ок.
Но вот с этими классами для веба надо наверно ласковей, а не топором как обычно происходит :)
RSDN Вам в помощь
Ещё на прошлой работе я решал аналогичную проблему. Вот обсуждение http://www.rsdn.ru/forum/com/42669.flat.1.aspx - там есть всё, и про оле-объекты и про то, как создать для них хост.
RSDN Вам в помощь
Ещё на прошлой работе я решал аналогичную проблему. Вот обсуждение http://www.rsdn.ru/forum/com/42669.flat.1.aspx - там есть всё, и про оле-объекты и про то, как создать для них хост.
Спасибо, да много, я бы сказал нереально много :) и именно по варианту с IWebBrowser2, который я так и не смог запустить в DLL, чтоб проверить.
В принципе меня устраивает работа классов CHtmlView. Использую в приложениях.
Поэтому хотел бы сначала помирить терминал с ними через DLL. Понять почему он падает именно при вызове функции Navigate.
Конечно, уверен что проблема глубоко в недрах моих незнаний (иначе жил бы в Сочи :).
Спасибо, да много, я бы сказал нереально много :) и именно по варианту с IWebBrowser2, который я так и не смог запустить в DLL, чтоб проверить.
В принципе меня устраивает работа классов CHtmlView. Использую в приложениях.
Поэтому хотел бы сначала помирить терминал с ними через DLL. Понять почему он падает именно при вызове функции Navigate.
Конечно, уверен что проблема глубоко в недрах моих незнаний (иначе жил бы в Сочи :).
Я сейчас пересмотрел все свои старые обсуждения на RSDN. Там есть объяснения таким падениям. На прошлой работе (10 лет назад) я плотно занимался встраиванием собственного веб браузера в собственную dll. Посмотрите все сообщения пользователя stringo, может найдёте что-то нужное.
ок. обязательно просмотрю. сейчас поработал с первой ссылкой. Создал DLL, добавил ATL -> HTML Control.
Визард добавил класс. Вобщем всё прошло гут.
Далее сделал функцию создания интерфейса Web-хоста на чарте (по аналогии со ссылкой).
extern "C" int PASCAL EXPORT CreateWeb(int hWnd) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); HWND pwnd=GetParent((HWND)hWnd); // получили родителя для создания в нём Web ShowWindow((HWND)hWnd, SW_HIDE); // скрыли чарт CComObject<CHtm> * pWebBrowserHost = NULL; HRESULT hr = CComObject<CHtm>::CreateInstance(&pWebBrowserHost); if (SUCCEEDED(hr)) { RECT rcClient = { 0, 0, 640, 480 }; pWebBrowserHost->Create(pwnd, rcClient, NULL, WS_POPUP|WS_VISIBLE|WS_THICKFRAME); IWebBrowser2 * pWebBrowser = pWebBrowserHost->m_spBrowser; pWebBrowser->Navigate(L"https://www.mql4.com", 0, 0, 0, 0); // и именно тут снова креш return(10); } return(-1); }
Радует конечно, что терминал так стабильно падает именно на этой фунции. :)
Я сейчас пересмотрел все свои старые обсуждения на RSDN. Там есть объяснения таким падениям. Посмотрите все сообщения пользователя stringo, может найдёте что-то нужное.
со строкой поиска (stringo WebBrowser) находится только один пост за 2003 год.
И среду приложения в Dll нужно проинициализировать вообще-то...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пытаюсь поставить на чарт просмотрщик HTML страниц из DLL
Ориентировочно три варианта как это сделать
Первый вариант - использовать CHtmlView
Но при наличии красной строки Navigate - происходит креш терминала. К слову - создание CHtmlView в диалоговом окне в обычном приложении MFC прокатывает нормально. Всё работает.
2. Второй вариант - сгенерировать CWebBrowser2 из компонента.
Но результат аналогичный. При создании окна CWebBrowser2 ошибок нет, но как только пытаюсь пойти по адресу в Navigate, то сразу креш.
3. Третий (не лишний, а запасной) вариант через интерфейс IWebBrowser2
Пытаюсь сделать по примеру из архива. Но в нём есть другая проблема - он написан чисто на c, и перенести адекватно в DLL не получается.
Интересует конкретно функция
К сожалению вылазят ошибки отсутствия в IOleObject нужных методов.
Думаю, что я подсоединяю несовместимые заголовочные файлы с проектом DLL.
Вобщем вопрос простой - как сие чудо (любой из вариантов) заставить работать на благо человечества.
У кого есть мысли? буду копать.