【问题标题】:MFC IE embedded web browser wackinessMFC IE 嵌入式网络浏览器古怪
【发布时间】:2010-09-08 12:59:07
【问题描述】:

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

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

我有 2 个问题。

问题 #1:

由于是无模式的,我自己使用 new/Create() 开始和停止对话框,然后使用 DestroyWindow()/delete(在 PostNcDestroy 中)。

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

怎么办?您如何真正“杀死”该子 Web 控件及其所有线程?

问题 #2:

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

谢谢!


“清理”

PostNcDestroy() 中的“delete this” - 当然是调用基本函数。应该更多吗?什么?对话不应该优雅地照顾它的孩子吗?

我尝试在 Web 控件上显式调用 DestroyWindow,或者向他发送/发布消息,例如 WM_DESTROY、WM_CLOSE 甚至 WM_QUIT - 但没有 - 相同的交易。

问题 #2:

不,就像缩进一样,控件占用了所有空间并且它在顶部,所以我猜任何鼠标操作都不会被传递到“波纹管”:)?但是为什么不调用他自己的 OnMouseMove 呢?因为它直接来自CWnd?我迷路了……

【问题讨论】:

  • 对于问题#1,销毁对话框时的清理顺序是什么?问题#2,您的意思是说,控件占用的空间比您创建时指定的空间多吗?

标签: c++ internet-explorer mfc dialog


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-03-03
    • 2015-12-31
    • 1970-01-01
    • 2011-07-09
    • 2018-02-12
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多