Dr.Hell 5 Report post Posted May 17, 2011 (edited) Пишу приложение в BCB с компонентом TCppWebBrowser, как только в коде появляется хоть одна функция из highgui, приложение сразу при запуске (собственно при создании компонента TCppWebBrowser) вылетает с ошибкой "Could not obtain OLE control window handle". UPD: При запуске программы форма, на которой лежат компоненты, не появляется, а окно браузера появляется одно само по себе (и сразу вылезает ошибка). То есть, highgui каким-то образом переиначивает главное окно программы. Edited May 17, 2011 by Dr.Hell Share this post Link to post Share on other sites
TroyashkA 12 Report post Posted May 17, 2011 Глянь http://forum.vingrad...opic-40245.html UPD: При запуске программы форма, на которой лежат компоненты, не появляется, а окно браузера появляется одно само по себе (и сразу вылезает ошибка). То есть, highgui каким-то образом переиначивает главное окно программы. Я думаю, что врядли highgui что-то переиначивает ... возможно, что браузер вылезает быстрее, чем форма, опенцв пытается к нему "подцепиться", не находит хэндл окна и обламывается. А может я просто гоню ... уже почти 5 утра p.s. если есть возможность подключить компонент веб-браузера чуть позже - стоит попытаться, ведь без него все работает ? Share this post Link to post Share on other sites
Nuzhny 243 Report post Posted May 18, 2011 Что именно из highgui ты вызываешь? Возможно, какая-нибудь функция вызывает внутри себя OleUnInitialize Share this post Link to post Share on other sites
Dr.Hell 5 Report post Posted May 18, 2011 Конкретно вызываю 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
Dr.Hell 5 Report post Posted May 20, 2011 В общем, забил я на эту проблему. При особой надобности можно без проблем вызвать внешнее окно 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