MFC IE嵌入式Web浏览器的不确定性
我有这个无模式的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")。