КОНТЕКСТ:
Я пытаюсь использовать IWebBrowser2, чтобы создать небольшой встроенный браузер для просмотра локальных файлов HTML. Я делаю это с помощью MFC и CWnd :: CreateControl в частности. Все работает хорошо, за исключением одного момента: когда я нажимаю на ссылки html, я получаю сообщения (для консоли отладки Visual C ++) о COleException. Браузер хорошо открывает ссылки, и других видимых эффектов нет, кроме сообщений в консоли.
Я смог отследить место метания. Есть callstack:
<pre>
AfxThrowOleException(...)
COleDispatchDriver::InvokeHelperV(...)
COleControlSite::InvokeHelperV(...)
COleControlSite::InvokeHelper(...)
COleControlSite::GetProperty(...)
COleControlSite::GetStyle(...)
CWnd::GetStyle(...)
CWnd::OnDisplayChange(...)
CWnd::OnSettingChange(...)
CWnd::OnWndMsg(...)
CWnd::WindowProc(...)
AfxCallWndProc(...)
CWnd::SendMessageToDescendants(...)CWnd::SendMessageToDescendants(...)
CWnd::OnDisplayChange(...)
CWnd::OnSettingChange(...)
CDialog::OnSettingChange(...)
CWnd::OnWndMsg(...)
CWnd::WindowProc(...)
AfxCallWndProc(...)
AfxWndProc(...)
После некоторого расследования я знаю, что MFC пытается вызвать Invoke для IDispatch IWebBrowser, чтобы получить состояние «ENABLED» управления веб-браузером. Контроль в свою очередь через возвращаемое значение говорит о том, что
такой запрос не может быть удовлетворен. MFC генерирует исключение (и перехватывает его само) и загрязняет выходные данные отладки.
ВОПРОС: Что я могу сделать, чтобы избежать или подавить эти сообщения?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
Это сообщение об ошибке:
<pre>
Warning: constructing COleException, scode = DISP_E_MEMBERNOTFOUND ($80020003).
RaiseException: Thread=9f84aba4 Proc=8c24c980 'HtmlHelpBrowser.exe'
AKY=00000401 PC=03fb542c(coredll.dll+0x0004542c) RA=8000a700(NK.EXE+0x00009700) BVA=00000001 FSR=00000001
Я делаю все это на Windows CE 5.0 с Visual C ++ 9.0.