Как создавать собственные приложения на C ++ с помощью пользовательского интерфейса HTML / CSS?


83

Можно ли разработать программу на C ++, используя HTML и CSS для пользовательского интерфейса? Я знаю о программировании с помощью Javascript с использованием контейнера Webkit, но меня действительно интересует разработка на C ++.

Я влюбился в C # WPF, когда разрабатывал под Windows, но теперь я перешел на Linux и не нашел хорошего инструмента для использования разметки для интерфейсов. Для этого я хотел бы смешать HTML и CSS, которые очень легкие и простые в использовании, с кодом C ++ с чем-то вроде WPF.

О, еще одна вещь: я ищу разработку для настольных компьютеров, а не для Интернета.

Ответы:


40

Да, это возможно. Вам нужна веб-платформа C ++. Вы можете начать с изучения CppCMS - бесплатной высокопроизводительной платформы веб-разработки (не CMS), предназначенной для быстрой разработки веб-приложений.

Изменить : после того, как вопрос был прояснен, я думаю, что Awesomium подойдет для ваших нужд.

Вы можете достичь той же функциональности, встраивая WebKit (или Gecko), но, насколько мне известно, это именно то, что Awesomium делает за кулисами.

Альтернативой является librocket - пакет промежуточного программного обеспечения интерфейса C ++, разработанный для игровых приложений. Как можно догадаться из описания, он хорошо подходит для игр или приложений реального времени.


3
Но будет ли это компилироваться для исполняемого файла? Я ищу компьютер, а не Интернет.
Ranisalt 07

4
Вы хотите, чтобы пользователь мог запускать браузер, переходить на localhost и использовать интерфейс вашего приложения? Или вы хотите, чтобы пользователь открыл исполняемый файл и ему был представлен веб-интерфейс?

15
@RobertDinu Я думаю, он хочет создать настольное приложение на C ++ и создать пользовательский интерфейс с помощью HTML / CSS
Леонардо Арройо

4
@RobertDinu: Существует также меньшая / более легкая библиотека под названием libRocket ( librocket.com ), которая может быть полезна OP. Вы можете добавить его к своему ответу, если считаете, что он подходит.
yzt 07

Я вижу, как это сэкономит много времени. Приведет ли такой подход к проблемам в какой-либо момент?
expiredninja

35

Sciter - это именно то, что нужно - встраиваемый движок HTML / CSS с C / C ++ API. Компактный и многоплатформенный.

И проверьте эту статью .

Sciter имеет тот же набор функций, что и WPF, но использует HTML / CSS вместо XAML и использует собственный API.

Возможности из коробки:

  • HTML, CSS, SVG, aPNG (анимированные PNG), спрайты изображений,
  • <plaintext> - редактор с подсветкой синтаксиса,
  • <htmlarea> - WYSIWYG HTML редактор,
  • <frame type=pager> - предварительный просмотр печати и печать HTML / CSS,
  • анимации,
  • HTTP-клиент, REST / JSON-клиент, WebSocket's, DataSockets,
  • и т.п.

То же приложение с пользовательским интерфейсом Sciter, работающее в Windows, MacOS и Linux из одних и тех же источников:

введите описание изображения здесь

Отказ от ответственности: я являюсь автором Sciter Engine.


2
Я новичок в C ++, но нахожу документацию скудной и пугающей для новичков ... документация должна начинаться с того, как запускать демонстрации в кодовых блоках или даже в оболочке, чтобы увидеть, работает ли это ... Пожалуйста, добавьте еще немного маркетинговых усилий в свой project
repzero

@repzero проверьте эту статью codeproject.com/Articles/859098/… , я думаю, она подходит для начинающих на C ++.
c-smile

2
@repzero Что касается кодовых блоков, просто откройте {sciter-sdk} /demos/usciter/usciter.cbp в этой среде IDE, выберите цель Release64 и нажмите кнопку «Build and Run» - вы должны увидеть, что приложение работает.
c-smile

@ c-smile спасибо за руководство. когда я пытался запустить проект в кодовых блоках, я получаю фатальную ошибку «gtk / gtk.h нет такого файла или каталога», эта ошибка возникла из-за инструкции include в «sciter-x» -types.h "заголовочный файл ... Я запускаю debian jessie .. У меня есть папка с именем gtk, которая содержит файл gtk.h. эта папка находится в '/user/include/gtk-2.o/gtk'.. есть совет?
repzero

В Linux Sciter требуется GTK3. Если вы хотите собрать образцы, вам понадобится пакет разработки gtk, попробуйтеsudo apt-get install libgtk-3-dev
c-smile

11

Я думаю, что Электрон был бы хорошим дополнением к другим ответам.

Он использует NodeJS для запуска окна Webkit. Сам Electron - это только html / css / js, но вы можете использовать любой модуль узла в своем приложении Electron, включая собственный, скомпилированный в исходном коде C ++. Возможным модулем для встраивания вашего кода C ++ будет node-gyp.

Однако имейте в виду, что этот рабочий процесс может включать в себя немного больше JS, чем у вас было бы с другими ответами.

Мой любимый текстовый редактор Atom был создан с помощью Electron.


9

Вы можете использовать Chromium Embedded Framework для встраивания содержимого HTML5 в свое приложение. Вы получите мощь и скорость Chromium и возможность создавать приложения с графическим интерфейсом так же, как вы разрабатываете веб-приложения.


4

В 2019 году я предлагаю вам попробовать Ultralight HTML UI Engine
Not Open Source, доступный для C ++. Поддерживается рендеринг OpenGL и DirectX.

Ultralight - это более легкий и быстрый вариант интеграции пользовательского интерфейса HTML в ваше приложение C ++.

Это сделано создателем Awesomium, который, к сожалению, решил удалить Awesomium. Это то, что мы получили сейчас.

Если вам нужно что-то более тяжелое, чем легкое, я рекомендую взглянуть на CEF . Это очень мощный инструмент с открытым исходным кодом.


1
Его закрытый исходный код очень и очень прискорбен, учитывая, на что был способен
Awesomium

Я попробовал Ultralight, но не смог. Не удалось даже запустить образец браузера из-за ошибок «lib-not-found». Содержащая папка определенно находится в моей переменной PATH. Пытался скомпилировать базовое приложение, но безуспешно. Компилятор не смог найти параметры класса, которые нигде не объявлены, как я мог доказать с помощью grep. (Ubuntu 18.4)
testalucida

@testalucida Вы можете обратиться за поддержкой в ​​рабочее пространство Slack Ultralight.
tomer zeitune 03
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.