92

是否可以在使用 HTML 和 CSS 作为用户界面的同时开发 C++ 程序?我知道使用 Webkit 容器使用 Javascript 进行编程,但我对 C++ 开发非常感兴趣。

当我在 Windows 下开发时,我就爱上了 C# WPF,但是现在我搬到了 Linux,我还没有找到一个很好的工具来使用接口标记。为此,我想将非常轻量级且易于使用的 HTML 和 CSS 与 C++ 代码和 WPF 之类的东西混合使用。

哦,还有一件事:我正在寻找桌面开发,而不是 Web。

4

6 回答 6

45

对的,这是可能的。你想要的是一个 C++ Web 框架。您可以从CppCMS开始——一个免费的高性能 Web 开发框架(不是 CMS),旨在快速 Web 应用程序开发。

编辑:澄清问题后,我认为Awesomium将非常适合您的需求。

您可以通过嵌入 WebKit(或 Gecko)来实现相同的功能,但据我所知,这正是 Awesomium 在幕后所做的。

一个替代方案是librocket——一个为游戏应用程序设计的 C++ 接口中间件包。正如您可以从描述中猜到的那样,它非常适合游戏或实时应用程序。

于 2013-07-07T23:06:36.393 回答
39

Sciter就是这样 - 带有 C/C++ API 的可嵌入 HTML/CSS 引擎。紧凑和多平台。

并查看这篇文章

Sciter 具有与WPF 相同的功能集,但使用 HTML/CSS 而不是 XAML 并使用本机 API。

开箱即用的功能:

  • HTML、CSS、SVG、aPNG(动画 PNG)、图像精灵、
  • <plaintext>- 带有语法高亮的编辑器,
  • <htmlarea>- 所见即所得的 HTML 编辑器,
  • <frame type=pager>- 打印预览和 HTML/CSS 打印,
  • 动画,
  • HTTP 客户端、REST/JSON 客户端、WebSocket 的、DataSockets、
  • 等等

在 Windows、MacOS 和 Linux 上运行的 Sciter UI 的相同应用程序来自相同的来源:

在此处输入图像描述

免责声明:我是 Sciter Engine 的作者。

2021 年更新:您还可以使用Sciter.JS,它是使用标准 JavaScript (ES2020) 脚本引擎的 Sciter 版本。

于 2015-11-06T03:13:08.183 回答
13

我认为电子将是其他答案的一个很好的补充。

它使用 NodeJS 来运行 Webkit 窗口。Electron 本身只是 html/css/js,但您可以在您的 Electron 应用程序中使用任何节点模块 - 包括自定义的、本机编译的 C++ 代码。嵌入 C++ 代码的可能模块是 node-gyp。

但是请注意,与其他答案相比,此工作流程可能包含更多的 JS。

我最喜欢的文本编辑器Atom是用 Electron 制作的。

于 2017-07-02T22:51:42.693 回答
11

您可以使用Chromium Embedded Framework在您的应用程序中嵌入 HTML5 内容。您将获得 Chromium 的强大功能和速度,并能够以与开发 Web 应用程序相同的方式构建 GUI 应用程序。

于 2016-12-20T15:36:09.767 回答
6

我建议查看Ultralight HTML UI Engine
Not Open Source, Available for C++。支持 OpenGL 和 DirectX 渲染。

Ultralight 是在 C++ 应用程序中集成 HTML UI 的更轻、更快的选项。

它是由 Awesomium 的创建者制作的,他不幸决定删除 Awesomium。

如果您需要更重的东西,我建议您看看CEF。这是一个非常强大(和开源)的工具。

于 2019-08-20T08:01:33.157 回答
1

2021年写作。

您可以使用 Web 程序集 ( https://webassembly.org/ )。Web 程序集或 WASM 允许您使用任何语言(例如 C++)编写应用程序。然后将其编译为浏览器可以运行的 Web 程序集。像其他程序集一样考虑 wasm,但对于浏览器。在撰写此答案时,所有主要浏览器都附带 WASM 引擎,因此入门不会遇到任何问题。

参考 C++ 的 Web 程序集官方文档:

  1. https://developer.mozilla.org/en-US/docs/WebAssembly/C_to_wasm
  2. https://developer.mozilla.org/en-US/docs/WebAssembly/existing_C_to_wasm

免责声明:我与 WASM 没有隶属关系

于 2021-10-03T07:14:34.427 回答