2013-03-06 16 views
6

Ich lerne C (ich habe gerade Kapitel 2 oder Lektion 2 beendet) der Programmiersprache C, ich überflogen bis zum Ende und sah, dass zu keinem Zeitpunkt etwas über das Erstellen geschrieben wurde eine GUI, und von dem, was ich gesucht habe, scheint es, dass ich ein Framework verwenden muss, aber ich hasse die Idee davon. Wie würde ich eine GUI ohne Framework erstellen? Wie genau funktionieren diese Frameworks und in welcher Sprache sind sie geschrieben? Ich mache keine massive Anwendung, selbst wenn es eine Woche dauert, wäre es machbar, eine GUI-Anwendung zu schreiben (in C), um etwas GRÖSSERES BASIC zu tun, als nur einen Knopf zu klicken, der nichts oder etwas Einfaches tut?Erstellen einer GUI ohne Framework in C

BITTE BEACHTEN SIE, dies muss Cross-Plattform Ich bin ein LINUX & BSD USER.

Antwort

2

Sie können Ihr eigenes Framework basierend auf OpenGL oder Xlib erstellen. Oder verwenden Sie eine gute Grafikbibliothek wie Motif oder CGUI. Oder verwende etwas Schreckliches wie GTK.

+0

warum magst du cgui und motiv und was meckerst du mit gtk? ist nicht firefox mit gtk gemacht? – David

+0

@David, GTK ist eine schreckliche Bibliothek: nicht nur durch das Äußere, sondern auch durch seine innere Struktur (eine Glib-basierte Struktur ist ein echter Albtraum, es ist fast wie Qt)! –

3

Ja, nicht gehen.

C kann nichts anderes tun, als Speicher zu verwalten und möglicherweise Softwareunterbrechungen zu machen (wenn Sie Pointer hacken).

Sie brauchen eine Bibliothek, um etwas zu tun.

GUI ist sehr komplex, man kann nichts "einfach" damit machen. Es ist ein Problem, dem ich jeden Tag gegenüberstehe.

Wenn Sie ein Fenster in C möchten, benötigen Sie X11, GTK, Windows-API, Video-Hacking oder andere lustige Sachen.

Oh, und Video Hacking ist ein Nein, OS wird eine Ausnahme auslösen, wenn Sie sogar versuchen, Videospeicher ohne seine Erlaubnis zu berühren.

Oh, und die "einfache Schaltfläche", die Sie sprechen, in Windows API ist eigentlich ein Fenster selbst, nicht sehr einfach.

+0

"OS wird eine Ausnahme auslösen, wenn Sie versuchen, Videospeicher ohne seine Erlaubnis zu berühren." - Es ist eher so, dass Userland-Prozesse Zugriff auf virtuellen Speicher haben, so dass das Behandeln von Adressen als physikalische Adressen nicht funktioniert. –

+0

Okay, wie benutze ich GtK? Ich weiß, wie man winapi (C# .. .net-Rahmen, usw.) verwendet, aber wie benutze ich GTK? – David

+0

Die Tutorials zum Einrichten von GTK auf Debian-basierten Systemen sind sehr einfach. Die Kompilation erfordert "gcc helloworld.c -o helloworld' pkg-config --cflags gtk + -2.0' "oder etwas in dieser Richtung. Mit apt-get können Sie gtk in wenigen Minuten einrichten. Obwohl, viel Glück es anderswo zu benutzen. Ich habe mehrere Tage gebraucht, um Windows einzurichten. Und ich habe nicht wirklich viele Unix-basierte Systeme außer Ubuntu und Fedora benutzt (auf denen ich gtk nie benutzt habe). – Dmitry

2

Sie können einen grundlegenden Rahmen

There is a great tutorial here.

Das Problem der WINAPI Verwendung machen mit C und primitive Frameworks wie WINAPI, dass das Layout Manging und Zustand äußerst schwierig wird.

Wenn Sie auf ein normales Betriebssystem abzielen, wird die Anforderung C nur unangemessen. Ich empfehle Ihnen mit C++ und Qt gehen und kompilieren Sie Ihre C Code in einem C++ Compiler.

+0

Sorry, aber jede WINAPI Zeug ist ein No-Go, muss dies Cross-Plattform sein, ich bin ein Linux-Benutzer. – David

+0

@David sollte das wohl vorher gesagt haben :-) – Mikhail

+0

Editiert mein OP. :) – David

3

Nicht die beste Straße zu nehmen. Ich würde vorschlagen, eine Cross-Plattform-Bibliothek, wie GTK+.

+0

Okay, wie benutze ich GtK? Ich weiß, wie man winapi (C# .. .net-Rahmen, usw.) verwendet, aber wie benutze ich GTK? - – David

+1

Überprüfen Sie die Tutorials hier: http://www.gtk.org/documentation.php. – meyumer