MFC IE嵌入式Web浏览器的不确定性

时间:2020-03-05 18:51:20  来源:igfitidea点击:

我有这个无模式的MFC对话框,它嵌入了Internet Explorer Web浏览器控件。

该控件直接从带有Visual Studio生成的ActiveX包装的CWnd派生,我仅使用DDX_Control(pDX,IDC_EXPLORER,m_explorer);将其映射到CDialog。

我有2个问题。

问题1:

由于没有模式,我可以根据自己的喜好使用new / Create()和DestroyWindow()/ delete(在PostNcDestroy中)启动和停止对话框。

当IE控件开始加载Flash视频(常规的YouTube内容)时,麻烦就开始了:当一个视频关闭时,如果破坏了对话框,该视频仍会加载!直到完全缓存为止。即使父对话框已通过PostNcDestroy并且释放了所有内存,Flash ActiveX线程仍会徘徊并继续运行。

该怎么办?我们如何真正"杀死"该子Web控件及其所有线程?

问题2:

Web浏览器控件覆盖对话框的整个区域。我无法在父对话框或者Web浏览器映射类中拦截任何OnMouseMove()!是什么赋予了?

谢谢!

"清理"

在PostNcDestroy()中"删除此",然后调用基本函数。应该更多吗?什么?对话框不应该优雅地照顾它的孩子吗?

我试图在Web控件上显式调用DestroyWindow,或者向他发送/发布诸如WM_DESTROY,WM_CLOSE,甚至WM_QUIT之类的消息,但没什么不同。

问题2:

不,就像缩进一样,该控件占用所有空间,并且位于最上面,因此我猜没有任何鼠标动作传递给'bellow':)?但是,为什么不调用自己的OnMouseMove?因为它直接来自CWnd?我迷路了...

解决方案

回答

问题1)在销毁窗口之前尝试myBrowser.navigate(" about:blank")。