Jump to content
Compvision.ru
Sign in to follow this  
Dr.Hell

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

Recommended Posts

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

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

Edited by Dr.Hell

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

  CppWebBrowser1 = new TCppWebBrowser(Form2);

  CppWebBrowser1->TControl::Parent = Form2;

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

Share this post


Link to post
Share on other sites

В общем, забил я на эту проблему. При особой надобности можно без проблем вызвать внешнее окно 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");

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×