Dr.Hell 5 Жалоба Опубликовано May 17, 2011 (изменено) Пишу приложение в BCB с компонентом TCppWebBrowser, как только в коде появляется хоть одна функция из highgui, приложение сразу при запуске (собственно при создании компонента TCppWebBrowser) вылетает с ошибкой "Could not obtain OLE control window handle". UPD: При запуске программы форма, на которой лежат компоненты, не появляется, а окно браузера появляется одно само по себе (и сразу вылезает ошибка). То есть, highgui каким-то образом переиначивает главное окно программы. Изменено May 17, 2011 пользователем Dr.Hell Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TroyashkA 12 Жалоба Опубликовано May 17, 2011 Глянь http://forum.vingrad...opic-40245.html UPD: При запуске программы форма, на которой лежат компоненты, не появляется, а окно браузера появляется одно само по себе (и сразу вылезает ошибка). То есть, highgui каким-то образом переиначивает главное окно программы. Я думаю, что врядли highgui что-то переиначивает ... возможно, что браузер вылезает быстрее, чем форма, опенцв пытается к нему "подцепиться", не находит хэндл окна и обламывается. А может я просто гоню ... уже почти 5 утра p.s. если есть возможность подключить компонент веб-браузера чуть позже - стоит попытаться, ведь без него все работает ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано May 18, 2011 Что именно из highgui ты вызываешь? Возможно, какая-нибудь функция вызывает внутри себя OleUnInitialize Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Dr.Hell 5 Жалоба Опубликовано May 18, 2011 Конкретно вызываю cvCreateVideoWriter, но ошибка позникает и с cvCaptureFromCAM, и просто с cvSaveImage. Появление ошибки зависит не от того, вызываю ли я эту функцию, а от того, компилится код с ее вызовом или без. Провел эксперимент. Повесил на одну кнопку создание новой формы, а на другую - создание веббраузера на ней. CppWebBrowser1 = new TCppWebBrowser(Form2); CppWebBrowser1->TControl::Parent = Form2; Если компилю без cvCreateVideoWriter, то все нормально, нажимаю на первую кнопку - появляется форма, нажимаю на вторую, появляется браузер на этой форме. Если компилю с cvCreateVideoWriter (просто добавляю вызов этой функции в любое место кода), то при нажатии на первую кнопку тоже нормально появляется форма, а при нажатии на вторую браузер появляется не на форме, а в левом верхнем углу экрана. Сабжевая ошибка вылезает на строчке CppWebBrowser1->TControl::Parent = Form2; Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Dr.Hell 5 Жалоба Опубликовано 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"); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах