我有这个嵌入 Internet Explorer Web 浏览器控件的无模式 MFC 对话框。
该控件直接来自CWnd
Visual Studio 生成的 ActiveX 包装器,我将其映射到CDialog
仅使用DDX_Control(pDX, IDC_EXPLORER, m_explorer);
.
我有2个问题。
问题 1:
由于没有模式,我使用 new/Create(),然后使用 DestroyWindow()/delete(在 PostNcDestroy 中)随意启动和停止对话框。
当 IE 控件开始加载 Flash 视频(常规的 YouTube 内容)时,麻烦就开始了:当一个关闭,从而破坏对话框时,视频仍然加载!直到完全缓存。即使父对话框已通过 PostNcDestroy 并且所有内存都已释放,Flash ActiveX 线程仍会徘徊并继续运行。
该怎么办?您如何真正“杀死”该子 Web 控件及其所有线程?
问题2:
Web 浏览器控件覆盖对话框的整个区域。我无法截获任何OnMouseMove()
- 在父对话框或 Web 浏览器映射类中!是什么赋予了?
谢谢!
“清理”
在 PostNcDestroy() 中“删除这个”——当然是调用基本函数。应该更多吗?什么?对话不应该优雅地照顾它的孩子吗?
我试图在 Web 控件上显式调用 DestroyWindow,或者向他发送/发布消息,例如 WM_DESTROY、WM_CLOSE,甚至 WM_QUIT——但没有——同样的交易。
问题2:
不,就像缩进一样,控件占用了所有空间并且它在顶部,所以我猜任何鼠标操作都不会被“下方”传输:)?但是为什么不调用他自己的 OnMouseMove 呢?因为它直接来自CWnd?我迷路了...