PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grundlegende Frage zur GUI-Programmierung


Binaermensch
2006-02-19, 18:27:42
moin!

Ich nutze meine Freizeit momentan, um meine C-Kenntnisse auszubauen. Da ich will, dass meine Programme auch optisch annehmbar ausschaun, will ich mich jetzt in die GUI-Programmierung unter Windows einarbeiten.

Als ich im Forum gestöbert habe, sind mir folgende Begriffe aufgefallen: MFC, wxWidgets, Qt, API.
Leider kann ich damit noch nicht allzuviel anfangen. Ich habe zwar aufgeschnappt, dass das alles unterschiedliche Ansätze sind GUI-Anwendungen zu schreiben, den Bezug untereinander habe ich jedoch nicht ganz verstanden.

MFC ist von Microsoft, oder?
Qt ist das Zeug, auf das auch KDE aufbaut.
wxWidgets ist ein Konkurrenzprodukt zu den beiden.
Und was ist API? Sind obengenannte Produkte APIs? Oder ist die API die Grundlage auf das MFC/Qt/wxWidgets aufsetzen?


Ich habe bisher folgendes Tutorial verwendet:
http://www.winprog.org/tutorial/

Ist das für MFC, Qt, oder wxWidgets? Oder ist das unabhängig davon? (Weil in der Überschrift ja von Win32 API die Rede ist, ohne einen der anderen Begriffe zu erwähnen.)


Ich hoffe, meine Gedanken sind jetzt nicht allzu wirr rübergekommen.
- Manuel


edit: Kann evtl. erst nächstes Wochenende antworten, bin atm beim Bundesheer

mithrandir
2006-02-19, 18:48:21
Dere!

Das sollen die C-Profis hier detaillierter erklären. Falls du bis dahin selbst nachlesen möchtest, steht ja zumindest etwas davon auch in der Wikipedia:
http://de.wikipedia.org/wiki/Application_Programming_Interface
http://de.wikipedia.org/wiki/Microsoft_Foundation_Classes
http://de.wikipedia.org/wiki/Qt_%28Toolkit%29
http://de.wikipedia.org/wiki/wxWidgets

bye, Peter

Supa
2006-02-19, 19:23:52
http://ls11-www.cs.uni-dortmund.de/people/rudolph/teaching/EINI/lecture.jsp

damit habe ich c++ gelernt, im letzten teil ist ein ganz kleiner einblick in qt unter gui programmierung. Qt ist ganz nett, im vergleich zur gui programierung nur über die windows.h ist es anfangs einfacher, wie es später aussieht weiß ich nicht, soweit bin ich selbst noch nicht

Fruli-Tier
2006-02-19, 20:23:26
Eine API (Application Programming Interface) ist ein Interface, welches Funtionen/Methoden zur Verfügung stellt, die eine bestimmte Funktionalität bieten.

Z.B. die WinAPI zum Programmieren mit Windows Funktionen.
Die MFC ist eine Art "Wrapper" um die grafischen Funktionen der WinAPI, um so das umständliche Entwerfen einer GUI per Text zu verhindern. Da MFC aber nicht gerade komfortabel ist (im Vergleich zu mir bekannten anderen GUI-Bibliotheken), würde ich, wenn es bei Windows bleibt, auf .NET setzen. Das ist sehr angenehm zu benutzen!

QT, wxWidgets sind Bibliotheken, die zur Verwendung eine API anbieten.

Das mit der MFC muss jetzt nicht 100% stimmen, so tief habe ich mich damit nie befasst. Ich glaube aber kaum, daß da letztendlich mehr dahinter steckt.

SgtTynis
2006-02-19, 21:54:00
MFC ist nicht nur ein "Wrapper" um die GUI Elemente der Win32API sonder geht darueber hinaus. Auch Datenbankzugriffsklassen sowie allgemeine Klassen wie Listen, Strings etc. (die es zugegebenermassen auch in der STL gibt) wurden implementiert. Auch Dinge wie Klassenexport aus einer Dll oder Typenhierachien zur Laufzeit sind mit MFC (ohne Einsatz von COM Objekten) moeglich.
Die Programmierung von MFC ist am Anfang schon ein wenige gruselig, zumal gerade das VS 6.0 elendig viel Sourcecode in properitaere Kommentartags geschrieben hat. Mit der Zeit ist das aber alles beherrschbar. Die Bedeutung von MFC wird aber mit einer weiteren Verbreitung des .NET Frameworks weiter sinken.

MadMan2k
2006-02-19, 23:28:31
es gibt auch noch ein paar mehr Toolkits:
http://de.wikipedia.org/wiki/Liste_von_GUI-Bibliotheken

Fruli-Tier
2006-02-22, 22:56:41
MFC ist nicht nur ein "Wrapper" um die GUI Elemente der Win32API sonder geht darueber hinaus. Auch Datenbankzugriffsklassen sowie allgemeine Klassen wie Listen, Strings etc. (die es zugegebenermassen auch in der STL gibt) wurden implementiert. Auch Dinge wie Klassenexport aus einer Dll oder Typenhierachien zur Laufzeit sind mit MFC (ohne Einsatz von COM Objekten) moeglich.
Die Programmierung von MFC ist am Anfang schon ein wenige gruselig, zumal gerade das VS 6.0 elendig viel Sourcecode in properitaere Kommentartags geschrieben hat. Mit der Zeit ist das aber alles beherrschbar. Die Bedeutung von MFC wird aber mit einer weiteren Verbreitung des .NET Frameworks weiter sinken.
Jo, da stimmt, aber die meisten werden es wohl schlicht als GUI Bibliothek kennen. Und wie Du schon sagtest, so Sachen wie String gibts in der STL auch ;)

Coda
2006-02-23, 00:04:20
http://ls11-www.cs.uni-dortmund.de/people/rudolph/teaching/EINI/lecture.jsp

damit habe ich c++ gelernt, im letzten teil ist ein ganz kleiner einblick in qt unter gui programmierung. Qt ist ganz nett, im vergleich zur gui programierung nur über die windows.h ist es anfangs einfacher, wie es später aussieht weiß ich nicht, soweit bin ich selbst noch nichtÜberhaupt nicht zu empfehlen. Da steht viel veraltetes Zeug drin, dass so nie im Standard war.

Ich benütze mit C++ immer wxWidgets, weil es Qt ja frei nur unter der GPL gibt. Das ist aber gar nicht mal schlecht, obwohl Signals und Slots natürlich sehr elegant sind in Qt.

Matrix316
2006-02-23, 11:09:50
Einfach mal nach win32 Programmierung suchen. Das geht mit C eigentlich relativ einfach, wenn man den durchblick hat. Ist zwar etwas schreibarbeit, aber dann weiß man ungefähr wie eine GUI aufgebaut ist und funktioniert (im Gegensatz dazu wenn man was mit MFC zusammenklickt).

SgtTynis
2006-02-23, 13:41:11
...(im Gegensatz dazu wenn man was mit MFC zusammenklickt).

MFC ist weder Fisch noch Fleisch, ohne wirklich im Sourcecode handgreiflich zu werden ist doch mit MFC nichts zu reissen. Der Designer fuer MFC Apps war bis zuletzt ein Witz. Eine wirkliche Designzeitumgebung wie jetzt im .NET existiert ja meines Wissens nicht wirklich. Davon mal abgesehen, richtige Programme werden im Sourcecode entschieden und nicht im Clickie-Buntie Designer.

Imperator Katarn
2006-02-23, 15:59:04
a propos zusammeklicken mit MFC:
redet ihr hier vom Resourceneditor oder vom Klassenassistenten?
Der erstere hat nämlich mit der MFC überhaupt nichts zu tun - zu erkennen u.a. daran daß es ihn auch schon vor der MFC gab, man lese nur mal im Petzold.
Man kann, wenn man denn will, erstellte Resourcen mit MFC-Objekten verknüpfen - mit Hilfe des Klassenassistenten, oder, wenn man es vorzieht, direkt im Sourceode im MESSAGE_MAP und in der DoDataExchange-Funktion.
Ebensogut kann man Resourcen mit der Win32 API verwenden - ok, ob man ein ähnlich komfortables Hilfsmittel wie den Klassenassistenten zur Verfügung hat weiß ich indes nicht... ;)

Binaermensch
2006-02-26, 14:46:44
Danke für die Antworten!
Ein bisschen schlauer bin ich zwar jetzt, so wirklich durchblicken tu ich aber noch immer nicht... ohne praktischen Erfahrung meinerseits wird das wohl nichts werden.


Welches dieser Toolkits/APIs/Klassenbibliotheken/whatever würdet ihr für einen Einsteiger empfehlen?
(Suchfunktion hat nichts ausgespuckt) (wobei es natürlich auch sein kann, dass ich einfach die falschen Suchbegriffe verwendet hab... Kann mir nicht vorstellen, dass so eine einfache Frage noch nie gestellt wurde)

Coda
2006-02-26, 14:56:46
Wenn C++ dann Qt oder wxWidgets. C#/.NET oder Java ist auch ganz brauchbar.

Binaermensch
2006-02-26, 15:25:01
Wenn C++ dann Qt oder wxWidgets. C#/.NET oder Java ist auch ganz brauchbar.Eher C als C++. (Falls das da einen Unterschied macht.)

TheGamer
2006-02-26, 15:30:22
Mit C wirst du IMHO nciht wiet kommen bei GUI Programmierung, zumindest keine GUI die es gibt ist in C programmiert IMO. Ich fuer meinen Teile sehe C fuer eine GUI eher als schwermoeglich und als Nachteil.

Coda
2006-02-26, 15:41:08
Die einzige C-only API die ich noch kenne für GUI-Programmierung ist GTK, aber das ist unter Windows etwas schlecht implementiert.

Ich würde aber ganz entscheidend zu C++ raten.

MadMan2k
2006-02-26, 16:42:58
gtk ist dann auch nicht mehr reines C, sondern C/GObject - Objektorientierung per Präprozessor...

schau es dir am besten aber selbst an:
http://www.gtk.org/tutorial/c58.html#SEC-HELLOWORLD