Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Для начала попробуйте так. Насколько я помню на вход надо подавать не простую строку, а оле-строку
А вообще, неплохо бы сначала проверить pWebBrowser на NULL
Зайти в профиль и выбрать "все сообщения пользователя"
А отдельный поток для создания веб-браузера не стартует?
И среду приложения в Dll нужно проинициализировать вообще-то...
Но надо не отдельное, а вместо чарта.вы имеете ввиду пример из MSDN ? http://msdn.microsoft.com/en-us/library/aa752127.aspx. Да. он работает отлично. Окно с эксплорером появляется.
Честно, про среду приложения в DLL не знаю даже (знаний маловато)
Для начала попробуйте так. Насколько я помню на вход надо подавать не простую строку, а оле-строку
делал, но я инициализировал как в примере MSDN (так как _bstr_t писало undeclared identifier)
VARIANT vEmpty; VariantInit(&vEmpty); BSTR bstrURL = SysAllocString(L"https://www.mql4.com"); hr=pWebBrowser->Navigate(bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
А вообще, неплохо бы сначала проверить pWebBrowser на NULL
да. вы правы, что-то не так.
Код выполняется. pWebBrowserHost - создаётся и получает хендл.
а указатель m_spBrowser (pWebBrowser) =0.
смог локализовать строку с проблемой.
к сожалению это в OnCreate
m_hWnd проверил, указатель живой, MessageBox открывает.
пытался другие варианты
HRESULT hr = wnd.CreateControl(L"https://www.mql4.com");
HRESULT hr = wnd.CreateControl(L"about:blank");
Может ли быть проблема, с самим окном m_hWnd (это родитель - GetParent() - чарта) (типа не подходит по каким то причинам)?
Но ведь обычный CButton на нем создаются успешно...
Честно, про среду приложения в DLL не знаю даже (знаний маловато)
Я имел в виду, что при инициализации приложений МФС, есть объектик
типа CApplication, и ещё какие-то статические штуки.
В Wtl я с этим долго возился- потому что диалоги при создании
сразу куда-то лезут и получаются исключения и null-pointer'ы.
Так вот всё это хозяйство я локализовывал, чтобы его можно было
поднимать в отдельном потоке (там же будет и цикл обработки сообщений).
без перехвата родной оконной функции. А для такого контрола как браузер,
дело может оказаться сложноватым. Может быть, можно будет диалог с собственным
потоком обработки событий прописать внутрь чужого окна?
2011-05-31-08-30: добавил не
поток CWinThread сделать можно. но для его создания наверно не нужны никакие Instance (то есть явно при создании я это не делал и не вижу похожего ничего кроме функции CWinThread::InitInstance). Обмен сообщениями с поток организовывал через m_pMainWnd.
с приложениями это понятно, но надо доставать всё и создавать из DLL, а получается что она более требовательна к знаниям...
Может быть, можно будет диалог с собственным потоком обработки событий прописать внутрь чужого окна?
а какие классы (CDialog ?) нужны для вписывания диалога в окно чарта? такое вообще реально ? // не вернется ли всё на ту же ошибку
Может быть... // и я все еще надеюсь на использования классов CHtmlView вместо явного ole-интерфейса :)
а какие классы (CDialog ?) нужны для вписывания диалога в окно чарта? такое вообще реально ? // не вернется ли всё на ту же ошибку
Вроде любой диалог сгодится- достаточно у него убрать border & title.
и он становится обычной панелькой, привязанной к своему Rect.
А вот какие там отношения с очередями сообщений будут...
не в курсе- так не пробовал.
Помогите понять такую вещь.
в ресурсе DLL создал диалог. Сделал под него класс CTestDlg.
Далее в DLL вызываю его так:
Диалог создаётся, всё ок.
Но он появляется только на мгновение. до выхода из функции. Не могу понять - почему диалог уничтожается ? ведь переменная объявлена снаружи функции, как указатель... а получается она уничтожается при выходе из функции...
Где нужно прописать переменную dlg или как сделать правильно, чтоб он не удалялся при выходе?