Eine eigene GUI
-
Hallo zusammen,
ich schreibe diesen Thread extra ins C++ Forum, da ich allgemeine, grundlegene Informationen suche, die ich leider auf die Schnelle mit gewissen Suchmaschinen nicht finden kann.Bis jetzt habe ich mich hauptsächlich mit Standard - C++ beschäftigt. Ich behaupte nun wirklich nicht von mir, dass ich nun alle Basics kann (im Gegenteil), doch daran arbeite ich. Dennoch interessiert mich die GUI Programmierung. Wenn ich bis heute ein Programm mit Fenstern haben wollte, tat ich dies mit meinen C++ Builder. Böse Stimmen aus dem Forum
sagten jedoch, dass es sich dabei ja nur um ein Zusammenklicken eines Programms handle. Das ist zwar übertrieben, doch in gewisser Weise frage ich mich eben doch, wie ich es schaffe, wirklich alles selbst zu programmieren - also auch Fenster, Buttons etc.
Ich habe darin keine Erfahrung. Macht man das mit der WinAPI oder
1.) wie erstellt man mit C++ eine beliebige GUI?
2.) Wie kann man das lernen?
3.) Wie macht ihr es? Und
4.) Braucht man Zusatzprogramme oder kann ich das beispielsweise mit meinem Visual Studio machen?
Ich habe wie gesagt keine Erfahrung, weshalb die Fragen komisch klingen können. Eigentlich dachte ich, dass die FAQ dazu Antworten liefern kann, doch entweder habe ich mich doof angestellt oder sie hat wirklich nichts zu diesem Thema.
Könnt ihr mir helfen?
Vielen Dank
lg, freakC++
-
Siehe diesen Thread.
-
Der Thread kam aber nach meinem
:D.
Deine Antwort in diesem Thread hat mir aber schon geholfen. Ich kann also nicht nur Visual Studio verwenden, sondern muss QT nehmen,
Was empfiehlt ihr denn? Die WinAPI ja anscheinend nicht.
Vielen Dank
lg, freakC++
-
-
Was heisst beliebige GUI? Du meinst eigene Kontrollelemente?
-
es gibt Bücher über den Umgang mit der Win32 API, Aber gerade wenn man wirklich low-level GUI Programmierung macht und in die Tiefen der Win32 API hinabsteigt geht wohl viel nur über learning by doing. Ich kenne jedenfalls keine Literatur, die die Kommunikation der Win32 API mit Nachrichten detailliert erläutert (wann welche Fensternachricht abgesetzt wird z.B.).
-
Von TWinControl ableiten und Message Handler definieren.
-
Ich kenne nicht einmal ein einziges Zusatzprogramm, das so etwas unterstützt. Da hilft mir nicht einmal die IDE mit, ich muss alles von Hand schreiben.
Für Windows sind alle Kontrollelemente Fenster (d.h. sie besitzen ein Fenster Handle von Typ HWND). Was so ein Kontrollelement letztendlich ist hängt von seinen Fensterstilen ab und was in dessen Message Handler so alles passiert.
-
-
DocShoe schrieb:
- Ich kenne nicht einmal ein einziges Zusatzprogramm, das so etwas unterstützt. Da hilft mir nicht einmal die IDE mit, ich muss alles von Hand schreiben.
Sofern man die Windows-API verwendet mag das stimmen. Schau dir mal statt dessen RAD-Tools an, und dann sieht man den Unterschied (hat aber nicht mehr den Low-Level einfluß der WinAPI).
-
Hallo auch zu Dir!
Du muss Dir noch im klaren werden für welches Betriebssystem du schreiben möchtest und ob Deine Programme eventuell kommerziell genutzt werden sollen (denn einige GUIs verlangen die Veröffentlichung des Quelltextes).
Für die WinAPI empfehle ich Dir ein gutes Buch dazu über Windows Programmierung zu rate zu ziehen. Gerade über die WinAPI gibt es viele gute Bücher (z.B. Windows Programmierung - Charles Petzold). Hier hatte ich eher das Problem das sie oft zu sehr in die Tiefe geben und richtig dicke Welzer sind.
Neben QT gibt es auch FLTK (Fast Light Tool Kit) und WxWidgets etc. Hier muss Du jedoch wie oben erwähnt aufpassen mit der Lizenz. Der Vorteil ist, dass sie nahezu Betriebssystemunabhängig sind. Bücher gibt es hier leider nur schwer zu finden, dafür gibt es jede Menge Tuturials im Internet.
Ich persönlich verwende immer noch FLTK. Es liefert klein Binarys, darf auch kommerziell verwendet werden und ist recht einfach zu handhaben. Viele Dinge muss man sich hier jedoch selbst zusammenschreiben, die es bei QT zum Beispiel schon gibt.
Gruß
Trooper
-
Hallo,
danke für die Antworten. Ihr redet von der WinAPI als low-lever. Ist das negativ gemeint? Falls ja, dann habe ich keine Lust, mich dort einzuarbeiten.Ich möchte Programme erstellen, die ich auch mit Borland machen könnte - eben nur mit eigener GUI Entwicklung.
Kann man eigentlich ein Programm schreiben, das sowohl auf Winodws als auch auf Linux mit Fenstern läuft? Sonst möchte ich für Windows schreiben.
Ich habe mal gegoogelt und Qt kann man auch kommerziell verwenden, oder? Warum kommt Qt eigentlich von Nokia?
Vielen Dank
lg, freakC++
-
Man kann mittels Qt erstellte Applikationen kommerziell verwenden.
Qt kommt jetzt von Nokia weil Nokia TrollTech gekauft hat.
-
low-level == du musst dich um viel Mist selber kümmern. Diese Aussage ist nicht negativ gemeint. Ob dir das gefällt musst du selber herausfinden.
wxWidgets/Qt/gtk+/fltk/... gibt es für viele Plattformen. Einmal programmiert heißt (mit ganz wenigen speziellen Ausnahmen, die dich nicht interessieren werden) auf allen unterstützten Plattformen kompilier- und verwendbar.
Kommerzielle Programme (also non-GPL) konntest du schon immer mit Qt schreiben, dann wurden halt Lizenzgebühren fällig. Nun steht Qt unter der LGPL, damit kannst du auch ohne Lizenzzahlungen closed-source-Programme veröffentlichen.Qt kommt ursprünglich von Trolltech. Nokia hat sich Qt vor ein paar Jahren gekauft, da es so wohl billiger ist als jährliche Lizenzgebühren für alle Entwicklungsrechner zu kaufen
-
Klar kann man mittels QT erstelle Programme kommerziell verwenden, nur muss man sich dann im klaren sein, dass man die Sourcecodes veröffentlichen muss!
Es sei denn man entscheidet sich für die "Qt Commercial Developer License", dann muss man das nicht, bezahlt jedoch Geld dafür.Es gibt drei Lizenzformen von QT:
- Qt Commercial Developer License (alle Sourcecodes können geheim bleiben)
- LGPL (nur Änderungen an QT müssen veröffentlicht werden)
- GPL (alle Sourcecodes müssen veröffentlicht werden)
Verwendest du eine Plattform unabhängige GUI, so ist das Programm (nach erneutem Übersetzten) auf beiden Plattformen lauffähig. Die Voraussetzung ist jedoch, dass du keine Betriebssystem spezifischen Funktionen verwendest.
-
trooper schrieb:
Klar kann man mittels QT erstelle Programme kommerziell verwenden, nur muss man sich dann im klaren sein, dass man die Sourcecodes veröffentlichen muss!
Es sei denn man entscheidet sich für die "Qt Commercial Developer License", dann muss man das nicht, bezahlt jedoch Geld dafür.Das ist falsch, Qt ist unter der LGPL erhältlich.
Es geht auch nicht um kommerziell verwenden (z.B. ein mit Gimp gemaltes Bild verkaufen) sondern die Software kommerziell vertreiben.
-
trooper schrieb:
Klar kann man mittels QT erstelle Programme kommerziell verwenden, nur muss man sich dann im klaren sein, dass man die Sourcecodes veröffentlichen muss!
Es sei denn man entscheidet sich für die "Qt Commercial Developer License", dann muss man das nicht, bezahlt jedoch Geld dafür.Das war früher so. Mittlerweile ist Qt aber unter der LGPL lizensiert.
Edit: verdammt, eine Sekunde zu spät
-
trooper schrieb:
Verwendest du eine Plattform unabhängige GUI,....
Und das ist QT?
Ich möchte aber keinen Quelltext veröffentlichen. Mmmh...prüft das denn irgendjemand nach oder wird an die Moral apelliert? Sonst kauf ich mir die Lizenz, wenn die nicht wieder irre teuer ist.
edit: Danke ipsec, das wollte ich hören :D. Hat aber l'abra d'or auch schon gemeint.
edit edit: Und trooper auch...
lg, freakC++
-
freakC++ schrieb:
Ich möchte aber keinen Quelltext veröffentlichen. Mmmh...prüft das denn irgendjemand nach oder wird an die Moral apelliert? Sonst kauf ich mir die Lizenz, wenn die nicht wieder irre teuer ist.
Wenn du anfängst das Programm (erfolgreich) zu verkaufen, wird das jemand prüfen. Ja.
Wenn du das Programm nur so veröffentlichst, ohne den Sourcecode rauszugeben, hält man dich bloß für einen komischen, unsozialen Kauz der seine Viren verstecken will und keiner nutzt dein Programm.
-
trooper schrieb:
Klar kann man mittels QT erstelle Programme kommerziell verwenden, nur muss man sich dann im klaren sein, dass man die Sourcecodes veröffentlichen muss!
Das würde dem Sinn der LGPL wiedersprechen.
-
Also ich glaub kaum dass es sich für dich lohnt jetzt schon die kommerzielle Version zu kaufen, entwickle lieber erst mal ein Programm dass überhaupt jemand kaufen würd, kannst dir dann ja immer noch die kommerzielle Version kaufen;-).
http://de.wikipedia.org/wiki/LGPL
Linkst du also dynamisch, kann dein Programm unter einer beliebigen Lizenz stehen, linkst du statisch, dann steht deine Anwendung automatisch auch unter der LGPL, was für einen "richtigen Verkauf" nicht so vorteilhaft ist.Änderungen an Qt selbst musst du veröffentlichen.
Alle Freiheiten haste dann halt mit der kommerziellen Version.
Falls du dich für die WIN-API entscheiden solltest, kann ich die das Buch Windows-Programmierung von Charles Petzold empfehlen.
Wie hier schon mehrmals gesagt wurde, kann man dir nicht einfach was empfehlen.
Müsstest du auch gesehen haben,wenn du die Suche benutzt hättest und dir andere Threads zu diesem Thema angeschaut hättest.
Du musst einfach schauen was dir am Besten gefällt, und das geht am einfachsten in dem du ausprobierst;-)Lg freeG
-
fr33g schrieb:
Linkst du also dynamisch, kann dein Programm unter einer beliebigen Lizenz stehen, linkst du statisch, dann steht deine Anwendung automatisch auch unter der LGPL,...
Die LGPL-Lizenz von QT (übrigens um kleine Klarstellungen seitens Nokias ergänzt, wegen Templates) erlaubt nur ein dynamisches Linken (+ Verwendung der Header, die für den Betrieb nötig sind [Templates]).
Ich seh darin auch keinen Nachteil, solange man nicht in den QT-Code eingreifen will (und da macht die Linzenz durchaus einen Unterschied.
-
@l'abra d'or und @ipsec und @asc
Ach Leute!. Lest doch bitte den Post ganz bis zum Ende. Da steht doch was es für Lizenzen für QT so gibt.
Ich hatte nicht geschrieben welche Sourcen man veröffentlichen muss (die des eigenen Programms oder die der veränderten GUI). Die LGPL gib es freilich auch, jedoch muss man da auch die Sourcecodes veröffentlichen, wenn man nicht dynamisch linkt oder die GUI selbst anfasst und bei statischem Linken unter die LGPL oder GPL stellen.Also bei mir kam es schon öfter vor, dass ich irgendwelche Funktionen der GUI (Treebrowser, Dateibrowser etc.) an meine Vorstellungen anpassen musste. Dann bleibt einem irgendwann nichts anderes übrig als die GUI zu erweitern und schon muss man die Sourcecodes (der erweiterten GUI) mit veröffentlichen.
Ne, ne die LGPL ist für kleine Projekte ganz brauchbar aber eben auch nicht immer das Gelbe vom Ei. Und der Zwang zum dynamischen Linken ist auch nicht so ohne.
Vollkommen frei ist man nur wenn man die kommerzielle Lizenz verwendet und die kostet nun mal Geld.
-
trooper schrieb:
@l'abra d'or und @ipsec und @asc
Ach Leute!. Lest doch bitte den Post ganz bis zum Ende. Da steht doch was es für Lizenzen für QT so gibt.
Ich hab den Post bis zum Ende gelesen. Die Lizenzformen hast du aber erst ca. eine Minute nach meiner Antwort reineditiert.
-
Es stand trotzdem vorher da das Sourcecodes veröffentlicht werden müssen.
Welche das sind ist erstmal völlig belanglos dabei, denn bei der LGPL müssen auch Sourcecodes veröffentlicht werden, nur eben die der veränderten GUI und nicht die eigenen.Aber ist gut wenn man vorschnell Texte interpretiert...
PS: Deine Antwort war zudem noch nicht da.