在我的ATL项目中,我有一个HTML浏览器主机的窗口。 我需要在运行时创build/销毁这个窗口。 当第三次调用IWebBrowser2.Navigate2
时,它将触发带有状态INET_E_RESOURCE_NOT_FOUND (0x800C0005)
。 MSDN将其描述为未find服务器或代理服务器,但我调用的方法与以前会话中的URL完全相同。
我在我的代码中执行以下操作:
初始化程序:
ole_obj_.CoCreateInstance(CLSID_WebBrowser); ole_obj_->SetClientSite(this); ole_obj_->DoVerb(OLEIVERB_SHOW, NULL, site, 0, GetHWND(), &rect); CComQIPtr<IWebBrowser2> webBrowser(ole_obj_); DispEventAdvise(webBrowser, &DIID_DWebBrowserEvents2);
导航例程:
CComQIPtr<IWebBrowser2> webBrowser(ole_obj_); webBrowser->Navigate2(&varUrl, 0, 0, 0, 0);
销毁程序:
DispEventUnadvise(ole_obj_, &DIID_DWebBrowserEvents2); ole_obj_->Close(OLECLOSE_NOSAVE); ole_obj_.Release();
有趣的事实,如果我评论ole_obj_->Close(OLECLOSE_NOSAVE);
它的工作,但当然我得到一个内存泄漏。
任何build议是受欢迎的。