5

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

该控件直接来自CWndVisual 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?我迷路了...

4

1 回答 1

3

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

于 2008-09-17T20:38:17.133 回答