2013-03-06 12 views
6

Sto imparando C (Ho appena terminato il Capitolo 2 o Unità 2) del linguaggio di programmazione C, ho sfiorato fino alla fine e ho visto che in nessun punto è stato detto qualcosa su come creare una GUI, e da quello che ho cercato, sembra che devo usare un framework, ma odio l'idea di quello. Come potrei creare una GUI senza un framework? Come funzionano esattamente questi quadri e in che lingua sono scritti? Non sto facendo un'enorme applicazione, anche se mi ci vorrà una settimana, sarebbe possibile scrivere un'applicazione GUI (in C) per fare qualcosa di ECCEZIONALE come un semplice clic su un pulsante che non fa nulla, o qualcosa di semplice?Creazione di una GUI senza un framework in C

SI PREGA DI NOTARE CHE QUESTO DEVE ESSERE CROSS-PLATFORM SONO UN LINUX & UTENTE BSD.

risposta

2

È possibile creare il proprio framework basato su OpenGL o Xlib. O utilizzare una buona libreria grafica come Motif o CGUI. Oppure usa qualcosa di orribile come GTK.

+0

perché ti piace cgui e il motivo e qual è la tua lamentela con gtk? non è Firefox realizzato con gtk? – David

+0

@David, GTK è una libreria orribile: non solo per esterno ma per la sua struttura interna (una struttura a base di glib è un vero incubo, è quasi come Qt)! –

3

Sì, non andare.

C non può fare altro che gestire la memoria ed eventualmente interrompere il software (se si esegue il puntatore).

Hai bisogno di una biblioteca per fare qualsiasi cosa.

GUI è molto complesso, non è possibile fare nulla di "semplice" con esso. È un problema che affronto ogni singolo giorno.

Se si desidera una finestra in C, è necessario X11, GTK, API Windows, video hacking o altre cose divertenti.

Oh, e l'hacking video è un no-go, il sistema operativo genererà un'eccezione se tentate persino di toccare la memoria video senza il suo permesso.

Oh, e il "pulsante semplice" di cui parli, in Windows API è in realtà una finestra stessa, non molto semplice.

+0

"Il sistema operativo genererà un'eccezione se si tenta persino di toccare la memoria video senza il suo permesso." - È piuttosto che i processi userland hanno accesso alla memoria virtuale, quindi il trattamento degli indirizzi come indirizzi fisici non funzionerà. –

+0

Ok come posso usare GtK? So come usare winapi (C# .. .net framework, ecc.) Ma come faccio a usare GTK? – David

+0

Le esercitazioni per l'impostazione di GTK su sistemi basati su Debian sono molto semplici. la compilazione richiede "gcc helloworld.c -o helloworld' pkg-config --cflags gtk + -2.0' "o qualcosa del genere. con apt-get puoi configurare gtk in pochi minuti. Anche se, buona fortuna usarlo altrove. Mi ci sono voluti diversi giorni per l'installazione su Windows. E in realtà non ho usato molti sistemi basati su Unix oltre a Ubuntu e Fedora (sui quali non ho mai usato gtk). – Dmitry

2

si può fare un quadro di base utilizzando il WINAPI

There is a great tutorial here.

Il problema con l'utilizzo di C e quadri primitivi come WINAPI è che manging il layout e lo stato diventa estremamente difficile.

Se si esegue il targeting di un normale sistema operativo, il solo requisito C diventa irragionevole. Vi consiglio di andare con C++ e Qt e compilare il codice C in un compilatore C++.

+0

Scusa, ma qualsiasi roba WINAPI è un no-go, questo deve essere multipiattaforma, io sono un utente linux. – David

+0

@David probabilmente avrebbe dovuto dirlo prima :-) – Mikhail

+0

Modificato il mio OP. :) – David

3

Non è la strada migliore da percorrere. Vorrei suggerire una libreria multipiattaforma, come .

+0

Okay, quindi come faccio a utilizzare GtK? So come usare winapi (C# .. .net framework, ecc.) Ma come faccio a usare GTK? - – David

+1

Controllare meglio le esercitazioni qui: http://www.gtk.org/documentation.php. – meyumer

Problemi correlati