97 votes

Comment créer des applications natives en C++ avec une interface HTML/CSS ?

Est-il possible de développer un programme C++ tout en utilisant HTML et CSS pour l'interface utilisateur ? Je sais qu'il est possible de programmer avec Javascript en utilisant un conteneur Webkit, mais je suis vraiment intéressé par le développement en C++.

J'ai adoré C# WPF lorsque je développais sous Windows, mais maintenant j'ai déménagé sur Linux et je n'ai pas trouvé un bon outil pour utiliser le balisage pour les interfaces. Pour cela, j'aimerais mélanger HTML et CSS, qui sont très légers et faciles à utiliser, avec du code C++, quelque chose comme WPF.

Oh, une dernière chose : je cherche à développer pour desktop, non pour le web.

47voto

Oui, c'est possible. Ce que vous voulez, c'est un framework web C++. Vous pourriez commencer en regardant CppCMS - un framework de développement web hautes performances et gratuit (pas un CMS) conçu pour un développement rapide d'applications web.

Modifier : Après que la question ait été clarifiée, je pense que Awesomium conviendrait parfaitement à vos besoins.

Vous pouvez obtenir la même fonctionnalité en intégrant WebKit (ou Gecko) mais autant que je sache, c'est exactement ce qu'Awesomium fait en coulisses.

Une alternative est librocket - un package d'interface middleware en C++ conçu pour les applications de jeu. Comme vous pouvez le deviner d'après la description, il convient aux jeux ou aux applications en temps réel.

40voto

c-smile Points 8609

Sciter est exactement cela - un moteur HTML/CSS intégrable avec une API C/C++. Compact et multiplateforme.

Et consultez cet article.

Sciter a le même ensemble de fonctionnalités que WPF mais utilise HTML/CSS au lieu de XAML et utilise une API native.

Fonctionnalités prêtes à l'emploi :

  • HTML, CSS, SVG, aPNG (PNG animé), sprites d'image,
  • </code> - éditeur avec coloration syntaxique,</li> <li><code><htmlarea></code> - éditeur HTML WYSIWYG,</li> <li><code><frame type=pager></code> - aperçu avant impression et impression HTML/CSS,</li> <li>animations,</li> <li>client HTTP, client REST/JSON, WebSocket, DataSockets,</li> <li>etc.</li> </ul> <p>La même application avec une interface utilisateur Sciter fonctionnant sur Windows, MacOS et Linux à partir des mêmes sources :</p> <p><a href="https://i.sstatic.net/fqfYD.png" rel="noreferrer"><img src="https://i.sstatic.net/fqfYD.png" alt="entrez la description de l'image ici" /></a></p> <p>Avis de non-responsabilité : Je suis l'auteur de Sciter Engine.</p> <p><strong>Mise à jour 2021 :</strong> vous pouvez également utiliser <a href="https://github.com/c-smile/sciter-js-sdk" rel="noreferrer"><strong>Sciter.JS</strong></a> qui est une version de Sciter utilisant un moteur de script JavaScript standard (ES2020).</p></x-turndown>

14voto

Johannes Points 577

Je pense que Electron serait un bel ajout aux autres réponses.

Il utilise NodeJS pour exécuter une fenêtre Webkit. Electron lui-même est uniquement composé de html/css/js, mais vous pouvez utiliser n'importe quel module Node dans votre application Electron - y compris du code C++ personnalisé, compilé nativement. Un module possible pour intégrer votre code C++ serait node-gyp.

Cependant, soyez conscient que ce flux de travail peut inclure un peu plus de JS que ce que vous auriez avec les autres réponses.

Mon éditeur de texte préféré, Atom, a été créé avec Electron.

11voto

Vadim Ovchinnikov Points 6879

Vous pouvez utiliser Chromium Embedded Framework pour intégrer du contenu HTML5 dans votre application. Vous obtiendrez la puissance et la rapidité de Chromium ainsi que la possibilité de construire des applications GUI de la même manière que vous développez des applications web.

6voto

tomer zeitune Points 478

Je suggère de jeter un œil à Ultralight HTML UI Engine
Non Open Source, Disponible pour C++. Rendu OpenGL et DirectX pris en charge.

Ultralight est l'option plus légère et plus rapide pour intégrer une interface utilisateur HTML dans votre application C++.

Il est créé par le créateur de Awesomium, qui a malheureusement décidé de supprimer Awesomium.

Si vous avez besoin de quelque chose de plus lourd je recommande de jeter un œil à CEF. C'est un outil très puissant (et open source).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X