我在VisualC++ 10中使用ATL来托管浏览器控件。 我的代码类似于这个例子:http://msdn.microsoft.com/en-us/library/9d0714y1(v=vs.80).aspx如何清洁地销毁WebBrowser控件
区别是我有主窗口,然后子窗口主持浏览器控制。 2分钟后我必须关闭浏览器才能完全关闭浏览器的activeX,但是这个子窗口应该是活着的,并且要做其他事情。但不知何故,这种浏览器控制仍然停留在那里,我可以看到滚动条或什么..
我也尝试通过创建子窗口到现有子窗口,并在关闭浏览器时我然后销毁这个孩子孩子 - 但它仍然行不通!
这是我已经关:
CLOSE()
{
m_spIWebBrowser2->Navigate(bstrURL, &vEmpty, &vEmpty, &vEmpty, &vEmpty);
m_spIWebBrowser2->Stop();
m_spIWebBrowser2->put_Visible(VARIANT_FALSE);
m_spIWebBrowser2->Quit();
DestroyWindow(m_wndChild.m_hWnd);
}
谢谢!
我记得关闭浏览器控件的问题,其中的原因是“本地” COM初始化/反初始化。为了支持野兽的异步特性,需要在'main'中调用CoInitialize。但大概你已经有了? –
是的,这些东西被掩盖了.. 我们也在对话框上使用IE控件 - 这些工作正常。 – hB0
我通过主线程的主窗口创建IE控逆变则主要产生一个新的线程,从那里我打电话导航(),它显示的网页,一分钟后,我把这个上面从子线程中提到的close()函数,浏览器控制消失,但它仍然存在,因为有时IEControl滚动条可见,并且iexplore.exe(out-of)进程也在运行.. – hB0