【问题标题】:Windows Browser Control Vs CDHtmlDialog and CHtmlViewWindows 浏览器控件与 CDHtmlDialog 和 CHtmlView
【发布时间】:2011-11-10 11:11:23
【问题描述】:

我想知道以下控件和类之间的区别。

Windows 浏览器控制与CDHtmlDialogCHtmlView

可见这些东西是用来在UI中添加html内容的 基于 Windows 的应用程序。

但是当我们在互联网上搜索时,经常会与这些东西混淆。

如果能解释一下这些控件和类的可用性就好了。

【问题讨论】:

    标签: winapi visual-c++ visual-studio-2008 mfc


    【解决方案1】:

    Web 浏览器控件是一个 Windows ActiveX 控件,Internet Explorer 本身可能使用它来显示 HTML 内容。至少,Web 浏览器控件和 Internet Explorer 使用相同的实现来呈现 HTML。

    CHtmlView 是一个 MFC - CView - 派生类托管所说的 ActiveX 控件。
    CHtmlDialog 是一个 MFC - CDialog - 派生类做同样的事情。

    它们是独立的类,因为不幸的是 MFC 在对话框、视图和窗口之间存在“巨大差距”。

    我没有在这两个 MFC 类上进行过大量工作,但据我了解,它们本身并没有添加任何功能。您也可以像普通的ActiveX一样托管Web浏览器控件,并使用GetControlUnknown获取IWebBrowser接口。


    根据我的经验,最大的问题是 DOM 只能在 DocumentComplete 之后访问,并且在消息循环没有启动之前该事件不会触发。这使得一些操作变得相当痛苦,我最终得到了一个自定义界面,在 DOM 可用之前排队修改。


    附: Windows 现在提供了基于 Edge 的 WebView2 - ActiveX 控件,作为一个足够强大的替代品。见https://docs.microsoft.com/en-us/microsoft-edge/webview2/

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2011-12-10
    • 2012-12-28
    相关资源
    最近更新 更多