2013-07-07 4 views
48

E 'possibile sviluppare un programma C++ mentre si usano HTML e CSS per l'interfaccia utente? Conosco la programmazione con Javascript usando un container Webkit, ma sono davvero interessato allo sviluppo del C++.Come creare app native C++ con interfaccia utente HTML/CSS?

Mi sono innamorato di C# WPF quando mi sono sviluppato in Windows, ma ora mi sono spostato su Linux e non ho trovato un buon strumento per l'utilizzo del markup per le interfacce. Per questo, mi piacerebbe mescolare HTML e CSS, che sono molto leggeri e facili da usare, con codice C++, con qualcosa come WPF.

Oh, un'altra cosa: sto cercando lo sviluppo del desktop, non il web.

risposta

26

Sì, è possibile. Quello che vuoi è un framework web C++. Potresti iniziare guardando CppCMS -a Free High Performance Web Development Framework (non un CMS) per lo sviluppo rapido di applicazioni Web.

Modifica: Dopo che la domanda è stata chiarita, penso che Awesomium sarebbe una buona misura per le vostre esigenze.

È possibile ottenere la stessa funzionalità incorporando WebKit (o Gecko), ma per quanto ne so è esattamente ciò che Awesomium fa dietro le quinte.

Un'alternativa è librocket - un pacchetto middleware di interfaccia C++ progettato per le applicazioni di gioco. Come puoi intuire dalla descrizione, è adatto per giochi o applicazioni in tempo reale.

+2

Ma questo dovrebbe essere compilato per un eseguibile? Sto cercando desktop, non web. – ranisalt

+4

Vuoi che l'utente sia in grado di avviare un browser e accedere a http: // localhost/e utilizzare l'interfaccia della tua applicazione? O vuoi che l'utente apra un eseguibile e venga presentato con l'interfaccia web? –

+12

@RobertDinu Penso che voglia creare un'applicazione desktop con C++ e creare l'interfaccia utente con HTML/CSS –

19

Sciter è esattamente questo: motore HTML/CSS integrabile con API C/C++. Compatto e multipiattaforma.

E controllare this article.

Sciter ha lo stesso feature set as WPF ma utilizza HTML/CSS invece di XAML e utilizza l'API nativa.

Caratteristiche fuori dalla scatola:

  • HTML, CSS, SVG, APNG (animato PNG), sprite di immagini,
  • <plaintext> - Editor con evidenziazione della sintassi,
  • <htmlarea> - WYSIWYG editor HTML,
  • <frame type=pager> - anteprima di stampa e stampa HTML/CSS,
  • animazioni,
  • HTTP cli ent, REST/cliente JSON, WebSocket di, DataSockets,
  • ecc

La stessa applicazione con Sciter UI in esecuzione su Windows, MacOS e Linux dalle stesse fonti:

enter image description here

di responsabilità : Sono un autore di Sciter Engine.

+0

Sono un principiante in C++ ma trovo la documentazione scarsa e terrificante per i principianti..la documentazione dovrebbe iniziare con come eseguire le demo nei codeblock o anche in una shell per vedere se funziona ... Si prega gentilmente di aggiungere un po 'di sforzo di marketing in il tuo progetto – repzero

+0

@repzero controlla questo articolo http://www.codeproject.com/Articles/859098/Sciter-multiplatform-embeddable-HTML-CSS-scripting, penso che sia adatto per i principianti C++. –

+1

@repzero Come di codeblocks, basta aprire {sciter-sdk} /demos/usciter/usciter.cbp in questo IDE, selezionare bersaglio Release64 e cliccare sul pulsante "Build and Run" - si dovrebbe vedere l'applicazione in esecuzione. –

5

È possibile utilizzare Chromium Embedded Framework per incorporare contenuto HTML5 nella propria app. Otterrai la potenza e la velocità di Chromium e la possibilità di creare app GUI nello stesso modo in cui sviluppi applicazioni web.

3

Penso Electron sarebbe una bella aggiunta alle altre risposte.

Utilizza NodeJS per eseguire una finestra di Webkit. Lo stesso Electron è solo html/css/js, ma puoi usare qualsiasi Node Module all'interno della tua Electron App, incluso il codice C++ personalizzato e compilato in modo nativo. Un possibile modulo per incorporare il tuo codice C++ sarebbe node-gyp.

essere consapevoli, tuttavia, che questo flusso di lavoro può includere un po 'più di JS di quanto si potrebbe avere con le altre risposte.

Il mio editor di testo preferito, Atom, è stato realizzato con Electron.