如何用 C++ 制作一个在客户端区域带有 HTML/CSS UI 的 Native UI 窗口

问题描述 投票:0回答:2

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

这个程序还有一个较新版本,显然它的编码与以前相同,但网络浏览器中的内容现在是在 Silverlight 中编码的。

所以根据我的理解,这只是一个原生窗口,在客户端区域有一个 HTML 网页,可以利用 CSS 设计。

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

非常感谢任何帮助。 谢谢

c++ user-interface winapi webview webui
2个回答
0
投票

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

  1. 在 WinForms 中,您可以像任何其他常见控件一样添加 WebBrowser 控件 控制,参见这里。您还可以将相同的控件 包含在 WPF 应用程序

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

  3. 如果您不使用 C#,在本机 Win32 应用程序中您可以 just 嵌入 CEF。或者您可以嵌入 Microsoft 的基于 IE 的控件 本质上是一个 COM 对象,但我会推荐 在这种情况下是前者。这正是 CEF 的用途。


0
投票

要创建此类应用程序,您可以按照已经建议的方式使用 CEF,但还有两种选择可能更能满足您的要求:

钼SDK

用于使用 HTML/CSS/JavaScript UI 创建跨平台桌面应用程序的 SDK。商业版(公开预览期间免费)。包括一组工具,用于从模板搭建项目、构建、品牌化、签名和公证,打包成适用于 Windows、macOS 和 Linux 的本机可执行文件。具有自动类型转换等功能的 C++ 到 JavaScript 桥接器。

借助 HTML/CSS,您的 C++ 应用程序的 UI 可能如下所示:

超轻

用于将 WebKit Web 浏览器控件嵌入到 C++ 应用程序中的跨平台框架。免费和商业。不使用铬。

© www.soinside.com 2019 - 2024. All rights reserved.