Як створити власні програми C ++ за допомогою інтерфейсу HTML / CSS?


83

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

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

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

Відповіді:


40

Так, це можливо. Що вам потрібно, це веб-фреймворк C ++. Ви можете почати з перегляду CppCMS - Безкоштовної високопродуктивної системи веб-розробки (не CMS), спрямованої на швидку розробку веб-додатків.

Редагувати : Після того, як питання буде з’ясовано, я думаю, що Awesomium добре підходить для ваших потреб.

Ви можете досягти тієї ж функціональності, вбудувавши WebKit (або Gecko), але, наскільки мені відомо, саме це робить Awesomium за кадром.

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


3
Але чи буде це компіляція для виконуваного файлу? Я шукаю робочий стіл, а не веб.
ранісальт

4
Ви хочете, щоб користувач міг запустити браузер і перейти до localhost та використовувати інтерфейс вашої програми? Або ви хочете, щоб користувач відкрив виконуваний файл і представив веб-інтерфейс?

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

4
@RobertDinu: Існує також менша / легша бібліотека під назвою libRocket ( librocket.com ), яка може бути корисною для OP. Можливо, ви захочете додати його до своєї відповіді, якщо вважаєте, що це підходить.
yzt

Я бачу, як це заощадить багато часу. Чи призведе такий підхід до питань у будь-який момент?
закінчився ninja

35

Sciter - саме це - вбудований движок HTML / CSS із API C / C ++. Компактний і багатоплатформенний.

І перевірте цю статтю .

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

Нестандартні особливості:

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

Той самий додаток із інтерфейсом Sciter, який працює в ОС Windows, MacOS та Linux з тих самих джерел:

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

Застереження: Я є автором Sciter Engine.


2
Я новачок в C ++, але мені здається, що документація мізерна і страшна для початківців .. документація повинна починатися з того, як запускати демонстраційні програми в кодових блоках або навіть оболонці, щоб перевірити, чи працює це ... Будь ласка, додайте ще трохи маркетингових зусиль у свій проект
repzero

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

2
@repzero Щодо блоків коду, просто відкрийте {sciter-sdk} /demos/usciter/usciter.cbp в цій IDE, виберіть Release64 target і натисніть кнопку "Створити та запустити" - ви побачите, що додаток працює.
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

Я думаю, що Electron буде чудовим доповненням до інших відповідей.

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

Однак пам’ятайте, що цей робочий процес може включати трохи більше JS, ніж ви мали б з іншими відповідями.

Мій улюблений текстовий редактор, Atom , був створений разом з Electron.



4

Станом на 2019 рік я пропоную вам перевірити надлегкий HTML UI Engine
Not Open Source, доступний для C ++. Підтримується рендеринг OpenGL та DirectX.

Надлегкий - це легший і швидший варіант інтеграції інтерфейсу HTML у програму C ++.

Це зроблено творцем Awesomium, який, на жаль, вирішив видалити Awesomium. Це те, що ми отримали зараз.

Якщо вам потрібна щось більш важка, а не легка, я рекомендую поглянути на CEF . Це дуже потужний (і з відкритим кодом) інструмент.


1
Будучи закритим джерелом, дуже і дуже прикро, враховуючи те, на що був здатний
Awesomium

Я спробував Ultralight, але не вдалося. Навіть не вдалося запустити зразок браузера через помилки, які не знайдено. Вміщена папка, безумовно, знаходиться в моїй змінній PATH. Спробував скомпілювати базовий додаток, але не вдалося. Компілятор не зміг знайти параметри класу, які ніде не оголошені, як я міг довести, використовуючи grep. (Ubuntu 18.4)
testalucida

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