2010-01-04 3 views
3

Я размещаю элемент управления веб-браузера в своем собственном окне. Вот соответствующие шаги:IWebBrowser2 Метод выхода не работает с результатом E_FAIL

CoGetClassObject(CLSID_WebBrowser, 
       CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER, 
       NULL, IID_IClassFactory, (void **)&pClassFactory); 

pClassFactory->CreateInstance(0, IID_IOleObject, (void **)&pObject); 

pClassFactory->Release(); 

pObject->SetClientSite((IOleClientSite *)impl) 
OleSetContainedObject((struct IUnknown *)pObject, true) 
pObject->DoVerb(OLEIVERB_SHOW, NULL, (IOleClientSite *)impl, 0, hHpsWnd, &rect); 

pWB->put_Visible(VARIANT_FALSE); 

hr=pWB->Quit(); 

На последнем заявлении выше возвращаемого значения Нг E_FAIL. Конечным результатом этого отказа в моем коде является утечка множества ресурсов. Что я делаю неправильно?

ответ

1

Чтение документации here указывает, что объект WebBrowser (т. Е. CLSID_WebBrowser) возвращает ошибку из метода Quit, потому что это не имеет смысла в контексте. Метод Quit завершит выход из версии IE, которая также использует тот же интерфейс для связи.

Единственное, что я могу предложить, это дважды проверить, что вы выпускаете все COM-объекты, относящиеся к браузеру.

+0

Большое спасибо. В этом есть смысл. Проблема с утечкой также исчезла после обновления с IE v6 до IE v8. (к сожалению, я новичок на сайте, и у меня нет достаточного количества баллов, чтобы повысить свой ответ, но оцените). –

 Смежные вопросы

  • Нет связанных вопросов^_^