【问题标题】:How to make a Native UI window in C++ with HTML/CSS UI in the client area如何在客户区使用 HTML/CSS UI 在 C++ 中制作原生 UI 窗口
【发布时间】:2019-07-12 15:57:08
【问题描述】:

我有这个程序,它显然是用 C++ 编写的,我可以看到窗口(对话框)是原生的,但在窗口中间,它有现代外观的 UI 元素,当我正确时单击客户区(带有现代 UI 元素),它会显示一个上下文菜单,就像 Web 浏览器一样(与 Internet Explorer 几乎相同的项目)。

这个程序还有一个更新的版本,显然它的编码和以前一样,但是网络浏览器区域中的内容现在用 Silverlight 编码。

所以根据我的理解,这只是一个在客户区带有 HTML 网页的本机窗口,它允许利用 CSS 设计。

我很想知道如何用 C++ 开发这样的程序,以及如何在这样的系统中完成事件处理。

非常感谢任何帮助。 谢谢

【问题讨论】:

  • 您可以将 Web 视图控件(例如 IWebBrowser2)嵌入到本机窗口中。有一些现成的项目可供重用。首先,我会推荐webview by zserge
  • @DanielSęk 您的链接格式有误。
  • @DanielSęk 感谢您的链接,我使用了IWebBrowser2,但它要求WebView2Loader.dll 也必须在用户计算机中,对吗?
  • 它要求用户在他的Windows机器上安装了Internet Explorer。但是今天所有的 Windows 机器都安装了 IE。唯一的问题是 IE 有点过时了,你需要偏离现代 CSS 和 Javascript 的用法。
  • 我明白了,谢谢你的信息,wxWebView 可以用来做这个吗?但是没有办法正确处理事件

标签: c++ user-interface winapi webview webui


【解决方案1】:

基本上,您可以通过将 Web 浏览器控件嵌入到您的应用程序中来做到这一点。 Microsoft 直接提供这样的控件,或者您可以使用第 3 方替代方案。

  1. 在 WinForms 中,您可以像添加任何其他常用控件一样添加 WebBrowser 控件 控制,see here。您还可以包含相同的控件in a WPF application

  2. 上面的 .Net WebBrowser 控件默认模拟 IE7(我相信)即使 用户安装了更新版本的 IE。你可以做到 使用更新的版本as shown in various online resources。然而,更好的选择是不使用 IE 或 WinForms WebBrowser 控件。考虑CefSharp。 “头孢” 代表 Chromium 嵌入式框架,它是一个原生库。 CefSharp 是一个 C# 包装器 在 CEF 附近。

  3. 如果您不使用 C#,则可以在本机 Win32 应用程序中just embed CEF。或者你可以embed Microsoft's IE-based control as, essentially, a COM object,但我会推荐 在这种情况下是前者。这正是 CEF 的用途。

【讨论】:

    猜你喜欢
    • 2013-07-05
    • 1970-01-01
    • 2011-01-09
    • 2021-10-21
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 2019-09-14
    相关资源
    最近更新 更多