Перейти к содержимому
Compvision.ru
Dr.Hell

OpenCV не работает вместе с TCppWebBrowser (TWebBrowser)

Recommended Posts

Пишу приложение в BCB с компонентом TCppWebBrowser, как только в коде появляется хоть одна функция из highgui, приложение сразу при запуске (собственно при создании компонента TCppWebBrowser) вылетает с ошибкой "Could not obtain OLE control window handle".

UPD: При запуске программы форма, на которой лежат компоненты, не появляется, а окно браузера появляется одно само по себе (и сразу вылезает ошибка). То есть, highgui каким-то образом переиначивает главное окно программы.

Изменено пользователем Dr.Hell

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Глянь http://forum.vingrad...opic-40245.html

UPD: При запуске программы форма, на которой лежат компоненты, не появляется, а окно браузера появляется одно само по себе (и сразу вылезает ошибка). То есть, highgui каким-то образом переиначивает главное окно программы.

Я думаю, что врядли highgui что-то переиначивает ... возможно, что браузер вылезает быстрее, чем форма, опенцв пытается к нему "подцепиться", не находит хэндл окна и обламывается. А может я просто гоню ... уже почти 5 утра :)

p.s. если есть возможность подключить компонент веб-браузера чуть позже - стоит попытаться, ведь без него все работает ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что именно из highgui ты вызываешь?

Возможно, какая-нибудь функция вызывает внутри себя OleUnInitialize

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Конкретно вызываю cvCreateVideoWriter, но ошибка позникает и с cvCaptureFromCAM, и просто с cvSaveImage. Появление ошибки зависит не от того, вызываю ли я эту функцию, а от того, компилится код с ее вызовом или без.

Провел эксперимент. Повесил на одну кнопку создание новой формы, а на другую - создание веббраузера на ней.

  CppWebBrowser1 = new TCppWebBrowser(Form2);

  CppWebBrowser1->TControl::Parent = Form2;

Если компилю без cvCreateVideoWriter, то все нормально, нажимаю на первую кнопку - появляется форма, нажимаю на вторую, появляется браузер на этой форме. Если компилю с cvCreateVideoWriter (просто добавляю вызов этой функции в любое место кода), то при нажатии на первую кнопку тоже нормально появляется форма, а при нажатии на вторую браузер появляется не на форме, а в левом верхнем углу экрана. Сабжевая ошибка вылезает на строчке CppWebBrowser1->TControl::Parent = Form2;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В общем, забил я на эту проблему. При особой надобности можно без проблем вызвать внешнее окно IE, и с ним работать точно так же, как со встроенным браузером.

#include "mshtml.h"

#include "exdisp.h"


#pragma link "SHDocVw_OCX"
HRESULT hr = S_OK;

Shdocvw_tlb::IWebBrowser2 * iBrowser = NULL;


hr = CoCreateInstance( CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, Shdocvw_tlb::IID_IWebBrowser2, (LPVOID*)&iBrowser);

if (hr != S_OK)

{

       ShowMessage ("Error creating the IWebBrowser2");

       return;

}

iBrowser->Visible = true;

iBrowser->Navigate("http://lozhki.net");

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×