Nach wxWidgets weiter? Was lerne ich nun sinnvollerweise?



  • Hallo,

    ich hab gerade schon die FAQ-Durchsucht und mir einige Beiträge angeschaut. Unter anderem die Frage nach WinAPI, MFC und so weiter.

    Ich habe vor kurzer Zeit angefangen mit C++. Dort einige Programme unter Linux und Windows mit gcc geschrieben. Klappt. Dann habe ich mir wxWidgets zur genüge gegeben. Das klappt auch. Nur werden meine Programme unnötig groß und die Geschwindigkeit und das Event-Handling ist auch nicht gerade "das gelbe vom Ei". Also hab ich mal die Tutorials von Visual Studio C++ durchgearbeitet. War nicht wirklich neues dabei. Nur jetzt stehe ich an dem Punkt wo ich über die Befehlsreferenz programme schreiben soll. Und da finde ich folgenden Text:

    ATL Reference 
    Enthält Referenzmaterial zur ATL-Bibliothek, einer Gruppe vorlagenbasierter Visual C++-Klassen, die die Programmierung von COM-Objekten vereinfachen.
    
    MFC Reference 
    Bietet Referenzmaterial für die MFC-Bibliothek: Einige Klassen bilden das Anwendungsframework, das wiederum das Framework einer für die Windows-API geschriebenen Anwendung darstellt.
    
    ATL/MFC Shared Classes 
    Enthält Referenzmaterial für Klassen, die von ATL und MFC gemeinsam verwendet werden.
    
    OLE DB Templates 
    Enthält Referenzmaterial zu den OLE DB-Consumer- und -Anbietervorlagen, einer Gruppe von Vorlagenklassen, die zahlreiche häufig verwendete OLE DB-Schnittstellen implementieren.
    
    Run-Time Library Reference 
    Enthält Referenzmaterial zur C-Laufzeitbibliothek, einen Satz von Routinen, die viele häufig wiederkehrende Programmieraufgaben automatisieren und in den C- und C++-Sprachen nicht enthalten sind. 
    
    Standard C++ Library Reference 
    Enthält Referenzmaterial zur Implementierung der C++-Standardbibliothek, einen Satz von Headerdateien, die Funktionen zur Ausführung grundlegender Dienste wie Eingabe und Ausgabe und effiziente Implementierungen von häufig verwendeten Vorgängen bereitstellen.
    
    STL/CLR Library Reference 
    Die STL/CLR-Bibliothek ist ein Paket der Standard Template Library (STL), einer Teilmenge der C++-Standardbibliothek, die mit C++ und der Common Language Runtime (CLR) von .NET Framework eingesetzt werden kann. Mit STL/CLR können Sie alle Container, Iteratoren und Algorithmen der STL in einer verwalteten Umgebung verwenden.
    

    Alles hat einen Link und ne schöne Befehlsreferenz dahinter, aber ich weiß irgendwie nicht wie ich weiter machen soll.

    Ich würde gerne "perfekte" und einfache Programme schreiben mit möglichste keinen Overhead und das ganze unter Visual Studio C++.
    C++, weil ich auch für Windows, Linux, Mac, Windows Mobile, usw schreiben möchte. Visual Studio, weil ich das schon gekauft habe.
    Nur brauch ich jetzt MFC? Viele schreiben, das ist zu alt. Ich will aber auch lernen, wie ich z.B. für Vista und Sieben schreiben kann und zwar im Stiele dieser Betriebssysteme. Also ist sowas wie wxWidgets oder andere "Hilfsmittel" ja eher schlecht.

    Bitte um Hilfe. Was lerne ich am Besten als nöchstes um schöne Programme erstmal für Windows schreiben zu können? Und zwar nicht nur XP, sondern auch Vista und Sieben?

    Danke schon mal,
    Stefan


  • Mod

    Wenn du es Plattformunabhängig willst, kannst du erstmal MFC, ATL etc. streichen.
    Evtl. solltest du dir mal QT anschauen, ist etwas moderneres C++ als wx und ebenfalls Plattformunabhängig.

    phlox


  • Administrator

    1. Du hast in der Liste die C++ Standardbibliothek aufgeführt? So wie du dein bisheriger Werdegang bezeichnest, scheint mir, dass du nie richtiges C++ gelernt hast. wxWidgets hat ein sehr altes und hässliches C++. Vielleicht wäre es mal Wert, ein bisschen Zeit in reines C++ zu investieren, also nur auf Konsolenebene. Ich persönlich hatte mit der MFC angefangen und mir hat dann "Die C++ Programmiersprache" von Bjarne Stroustrupp sehr geholfen, um mein C++ zu verbessern.
    2. Für schöne GUIs unter XP, Vista und Seven wäre .Net, WPF und C# das beste und einfachste, aber halt nur Windows.
    3. Um die Grundlagen von Windows GUI Programmierung zu lernen, also komplett ohne Framework und direkt mit den C Schnittstellen, musst du dir die WinAPI anschauen. Da wird glaub ich oft das Buch von Petzhold empfohlen.
    4. Platformunabhängige schöne GUI Libraries, gibt es meiner Meinung nach nicht. Die sind alle irgendwie hässlich 🙂

    Grüssli



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ansonsten kannst du dir, wenn du eine plattformunabhängige GUI-Lib suchst, die vllt. unter Windows nicht ganz so schön ist, dafür aber perfektes und modernes C++ verwendet, gtkmm anschauen.



  • Hallo,

    ich hab mir jetzt erstmal ein Buch zur MFC bestellt. Das ist mein nächster Weg.
    Die Sache mit wxWidgets ist bei mir definitiv als Einstieg gedacht gewesen. Ich schreibe zwra derzeit mit wxWidgets, aber nur um schnelle Ergebnisse zu bekommen. Mein Ziel ist schon, dass ich auch schöne Windows GUIs benutze (auch Vista, Seven und XP) und ein besseres C++. Ich habe das Buch "C++ von A bis Z" gelesen und darüber meinen C++-Wissenstand. Der ist nätürlich nicht umbedingt der Beste, weil ich mich oftmals erwische wieder als PHP-ler zu denken (mein Ursprung).

    Die letzten Tage habe ich im Internet mehr oder weniger die WinAPI durchforstet. Das macht dann schon Spaß auch mal ein Fenster ohne ein wxFrame zu erzeugen.

    Wo will ich hin?
    - Sauberes C++
    - Perfekte kleine Programme (also so wenig wie möglich Overhead)
    - Vorwiegend Windows (weils jeder hat), aber auch CE-Systeme sowie Linux und Mac.
    - Schnittstellen wie z.B. Midi-Steuerung, Bluetooth oder Netzwerk (UPD, TCP)
    - Fit genug zu sein um auch mal was ausgefallenes wie z.B. Handy (Windows Mobile) oder NintendoDS zu machen.

    Wenn ich euere Beiträge richtig lese, dann sollte ich erstmal das Buch "Die C++ Programmiersprache" von Bjarne Stroustrupp lesen und mein C++ verbessern und danach mich von wxWidgets verabschieden und eher QT oder die direkten APIs wie WinAPI lernen.

    Ok, der Weg ist das Ziel.

    Danke schon mal,
    Stefan


  • Mod

    stefanjann schrieb:

    Wo will ich hin?
    - Sauberes C++
    - Perfekte kleine Programme (also so wenig wie möglich Overhead)
    - Vorwiegend Windows (weils jeder hat), aber auch CE-Systeme sowie Linux und Mac.
    - Schnittstellen wie z.B. Midi-Steuerung, Bluetooth oder Netzwerk (UPD, TCP)
    - Fit genug zu sein um auch mal was ausgefallenes wie z.B. Handy (Windows Mobile) oder NintendoDS zu machen.

    - Sauberes C++ ist wichtig, aber MFC fällt mir da nicht ein 😉
    - MS Compiler und MFC bekommen die Programme nur so klein, weil die MFC bei WINDOWS schon dabei ist, dynamisches Linken von wxProgrammen z.b. führt auch zu erheblich kleineren exen.
    - Viele Libs aus dem MS Umfeld (MFC sowieso) sind nicht plattformunabhängig.
    - Für Netzwerk solltest du dir mal boost::asio anschauen, dann hast du eine Plattform und Library unabhängige Version.
    - Handy und Nintendo sind noch mal eigene Welten, was Programmierung angeht.

    Vielleicht solltest du dir mal im allgemeinen Boost ansehen, da hats einige nette Libs dabei.
    Und wx verwendet ja die Systemcontrols, glaub also nicht, das MFC Programme so viel besser aussehen 😉

    phlox



  • Hallo,

    bei mir sammeln sich langsam die Begriffe und irgendwie wird mir klar, dass ich mal jemanden braucht der mir bitte mit wenigen Worten zuammen fassen kann, was ist:

    - MFC
    - ATL
    - Boost
    - GTK+
    - wxWidgets
    - gtkmm
    - QT

    und für welche Bereiche sollte man was am Besten einsetzen.
    Ich weiß, dass klingt jetzt an dieser Stelle etwas komisch, aber ich bin noch blutiger Anfänger und irgendwie verliere ich gerade den Überblick.

    So wie ich das verstehe, ist gtkmm, wxWidgets und QT eine Art Befehlssammlung, die sich je nach Betriebssystem an die passenden Libs hängen und die passenden Befehle aufrufen um ein schönes graphisches Programm zu erzeugen.

    Die Grundlagen dazu bieten MFC, ATL oder GTK+?

    Boost ist ne Art Erweiterung für C++ die viele Vorgänge schon mal sinnvoll zusammen gefasst hat.

    Hab ich das jetzt richtig verstanden?


  • Administrator

    GUI Frameworks:
    - MFC -> am besten vergessen, sehr hässliches C++
    - GTK+ -> gtkmm ist der C++ Wrapper davon, nettes C++, auf Windows aber keine native GUIs
    - wxWidgets -> hässliches C++
    - QT -> Braucht eigenen Pre-Preprocessor. Nur unter GPL für OpenSource erhältlich, ansonsten hat es einen stolzen Preis.

    COM Framework:
    - ATL

    Bibliotheken Sammlung für allgemeine Aufgaben:
    - Boost

    stefanjann schrieb:

    So wie ich das verstehe, ist gtkmm, wxWidgets und QT eine Art Befehlssammlung, die sich je nach Betriebssystem an die passenden Libs hängen und die passenden Befehle aufrufen um ein schönes graphisches Programm zu erzeugen.

    wxWidgets und Qt kapseln auf Windows einfach nur die WinAPI in eine C++ Klassenhierarchie.
    gtkmm kapselt GTK+ und dieses setzt unter Windows glaub ich auf OpenGL, kapselt also die Schnittstellen zu OpenGL und erstellt, bzw. zeichnet, damit ein GUI.

    stefanjann schrieb:

    Die Grundlagen dazu bieten MFC, ATL oder GTK+?

    Nein. MFC, ATL und GTK+ sind alles Frameworks, welche andere Schnittstellen kapseln.

    stefanjann schrieb:

    Boost ist ne Art Erweiterung für C++ die viele Vorgänge schon mal sinnvoll zusammen gefasst hat.

    Keine Erweiterung für C++, aber eine inoffizielle Erweiterung der C++ Standardbibliothek. Sie bietet Bibliotheken für alle möglichen Bereiche in meistens sehr sauberem C++.

    stefanjann schrieb:

    Hab ich das jetzt richtig verstanden?

    Nein ... aber vielleicht jetzt *g*

    Ganz ehrlich, wenn ich auch noch so einen Satz lesen muss:

    stefanjann schrieb:

    ..., aber ich bin noch blutiger Anfänger und irgendwie verliere ich gerade den Überblick.

    Dann komme ich ehrlich gesagt wirklich nur zu diesem Schluss, dass du zuerst mal "Die C++ Programmiersprache" von Bjarn Stroustrup lesen solltest. Lern zuerst vernünftiges und sauberes C++, bevor du in die Abgründe gewisser Bibliotheken gehst.

    Es gibt im übrigen viele sehr schlechte C++ Bücher auf dem Markt. Was ich bisher zu "C++ von A bis Z" gehört habe, ist eher ein mittelmässiges Urteil. Vor allem geht es viel zu früh auf Themen ein, welche ein Anfänger lieber noch ein bisschen aussen vor lassen sollte, bis er sich im richtigen C++ gefestigt hat. C++ zu lernen braucht Zeit.

    Grüssli


  • Mod

    Dravere schrieb:

    GUI Frameworks:
    - MFC -> am besten vergessen, sehr hässliches C++
    - GTK+ -> gtkmm ist der C++ Wrapper davon, nettes C++, auf Windows aber keine native GUIs
    - wxWidgets -> hässliches C++
    - QT -> Braucht eigenen Pre-Preprocessor. Nur unter GPL für OpenSource erhältlich, ansonsten hat es einen stolzen Preis.

    COM Framework:
    - ATL

    Bibliotheken Sammlung für allgemeine Aufgaben:
    - Boost

    QT steht unter LGPL!
    Ist somit von der Lizenz fast mit wxWidgets gleich zu setzen.
    Zu GTK sollte man auch sagen, das vieles nur in C möglich ist, wenn man etwas komplexere Anforderungen hat. GTKmm ist halt nur ein Wrapper.

    phlox



  • Danke Dravere für deine Ausführungen,
    ja, ich bin blutiger Anfänger und da ich nicht gerade die Zeit habe vieleSchulen zu besuchen muss ich mir leider über Bücher und Tuts mein C++ drauf schaffen. Daher bin ich auch so viel in diesem Forum und versuche zu lernen, lernen und lernen. Natürlich besuche ich viele Internetseiten und viele Tutorials und probiere mit QT, wxWidgets, MFC und wie sie nicht alle heissen.

    Leider verliert man dort gerne den Überblick. Gerade bei den Profis gibt es tausende Kürzel unter denen sich man erstmal was vorstellen soll. Alle Frameworks haben Vorteile, Nachteile, Anhänger und Gegner. Ein ordentliches Bild kann man da schlecht bekommen.

    Ich möchte erst mal kleine Programme schreiben. Habe mir also das hochgelobte Buch "C++ von A bis Z" gekauft und war begeistert. Verschiedene Stimmen hier im Forum haben aber dieses Buch schon zerrissen mit Sätzen wie "maximal als Nachschlagewerk", "schlechterSchreibstiel" oder auch "was hat den GUI in so einem Buch verloren". Andere loben es hoch hinauf: "Perfekt zum Einstieg", "schnell bei GUI mit wxWidgets".

    Für einen Anfänger wie mich ist es schwer die "echten" Kritiken von den "ich-moser-nur-mal" zu unterscheiden. Was ist jetzt das A und O?
    Eigentlich will ich doch nur Programme schreiben und das in C++. Ich will ein kleines MIDI-Programm schreiben, welches mir ein bisschen Musik über mein MIDI-Keyboard macht. Danach will ich mit Hilfe von Netzwerken und TCP/IP ein kleines Spiel schreiben, wo ich schon seit jahren ein Konzept habe und das umsetzen. Und so ganz nebenbei interessieren mit noch Windows Mobile-Anwendungen.

    Woran unterscheidet man eigentlich schelchten von gutem C++? Ich hab schon mal gelernt, das man keine Macros verwenet, wie man das in wxWidgets kennt. Und das man sich die aktuellen Standards anschaut und keine namespaces global verfügbar macht.

    Dann hab ich mir QT angeschaut. Dann noch GTK+. Bei GTK+ fällt mir auf, dass alles in DLLs steckt. Kann ich ein Standalone schreiben ohne die DLLs mitzuliefern? Auch hier wieder Glaubenskriege. Die einen sagen, die WinAPI ist natürlich für Windows das einzig wahre, die anderen Sagen, richtig gut wird man erst wenn man die WinAPI nicht nutzt.

    Sobald man sich auf eine Lib oder GUI oder ein Framework einlässt findet man sofort viele Gegner die einem sofort sagen, warum man das nicht tun sollte.

    Daher auch mein letzter Beitrag. Man verliert so leicht den Überblick. Ich bin fest entschlossen ordentliches C++ zu lernen. Ich werde mir auch das Buch "Die C++ Programmiersprache" von Bjarn Stroustrup noch kaufen und hoffe dann etwas mehr durchblick zu bekommen.

    Danke schon mal an alle die mir hier im Forum auch immer wieder meine Newbe(e)-Fragen beantworten und mir in diesem Thread helfen einen Durchblick zu bekommen.


  • Mod

    Vielleicht sollte man auch sagen, das gutes C++ nicht wirklich was mit GUIs zu tun hat.
    Boost ist ein sehr guter Ort, wenn du da noch nicht warst, da gibts viele Interessante Libs.
    Auch Dinge wie Designpatterns in C++ könnten für dich interessant sein, evtl. kennst du sie ja schon aus PHP.

    Und natürlich gibt es von jeder Lib anhänger, und jede Lib hat nun mal ihre Vor und Nachteile.

    phlox



  • > Was ich bisher zu "C++ von A bis Z" gehört habe, ist eher ein mittelmässiges Urteil.

    Das Buch ist für einen erweiterten Einstieg mehr als geeignet. Er geht auf nahezu alle Aspekte von ANSI C++ ein (OOP/Polymorphie/Templates), ein bisschen wenig Boost, aber besonders z.B. Verkettete Listen. Und nichts ist besser für einen Anfänger als ein Buch, worin er etwas Zusatz dazu, z.B. Netzwerk-Programmierung/Boost-Programmierung und GUI-Programmierung lernt, damit kommt er durch den C++ Jungle, bis er auf eignenen Beinen steht und sein Wissen mit dem "trockenen Stroustrup" verfeinert, das Buch kann man als Anfänger ja vergessen.

    > Vielleicht sollte man auch sagen, das gutes C++ nicht wirklich was mit GUIs zu tun hat.

    Leider. Träumen wir nicht alle von std::gui? 😃


  • Administrator

    phlox81 schrieb:

    QT steht unter LGPL!
    Ist somit von der Lizenz fast mit wxWidgets gleich zu setzen.

    Ist mir ganz neu. Habe aber gerade selber nachgeschaut. Es stimmt tatsächlich, ist aber ist erst seit der Version 4.5 so, deshalb wusste ich noch nichts davon.

    @stefanjann,
    Mein Problem ist, welches ich mit "C++ von A bis Z" habe, dass das Buch auf viel mehr als nur C++ eingeht und dadurch C++ zu kurz kommt.
    C++ ist eine hoch komplexe Sprache, welche duzende von Bücher nur als Sprache füllt. Reines C++ kennt aber keine GUIs, keine Graphik, keine Tastaturen, Joysticks, Mäuse, keine Konsole, usw. usf. Reines C++ ist also extrem roh, gründsätzlich ziemlich ernüchternd für einen Anfänger, da er mit reinem C++ nichts grossartig aussehendes erreichen kann.
    Ich setze daher das Buch "C++ von A bis Z" zu den Büchern, welche den Anfänger aufmuntern wollen, in dem sie ihm nicht richtig C++ beibringen, dafür schon viel zu früh in GUI Programmierung einsteigen. Damit kann der Anfänger bereits unglaubliches machen, er hat eine riesige Freude. Allerdings merkt er auch nicht, dass man seine Probleme deutlich einfacher und schöner hätte lösen können. Für die Wartung eines Programmes sogar zum Teil fatale Fehler gemacht hat.

    Ich selber habe mit einem Buch über C++ und die MFC angefangen. Damals fand ich das Buch unglaubliche Weltklasse. Ich konnte C++ programmieren! War ich stolz! :p
    Heute halte ich das Buch für ein Verbrechen. Ich konnte damals nicht im geringsten C++ programmieren, man hat mich schlicht und einfach angelogen.

    Ich habe "C++ von A bis Z" nicht selber gelesen, aber wenn ich schon nur diesen Titel lese und dann die Leute mir erzählen, dass sie in dem Buch GUI- oder Socketprogrammierung lernen, dann ist dieses Buch genauso eine Lüge. Denn in diesen wenigen Seiten, in welchen wirklich C++ gelernt wird, kann man unmöglich C++ von A bis Z lernen. Dem Leser wird mir grossartigen Programmen, vor allem grossartig in dem man was sieht, vorgegaukelt, dass er programmieren kann.

    @Ad aCTa,
    Ja, das Buch "Die C++ Programmiersprache" ist für einen Anfänger ein wenig zu schwer. Aber es gibt gute C++ Lernbücher auch für Anfänger (z.b. C++ Primer), welche auch C++ lernen und dem Anfänger nicht Dinge vorgaukeln oder völlig veraltete Bibliotheken verwenden, wo der Anfänger dann einen schlechten Stil abkupfert. Und wenn man einmal eine Angewohnheit im Programmieren sich angeignet hat, kommt man immer wieder sehr schlecht davon los. Das ist ja das blöde Problem bei Angewohnheiten 😉

    Und nein, ich träume nicht von std::gui . Würde meiner Meinung nach überhaupt nicht in den Standard passen. Es wäre aber mal an der Zeit, dass irgendwo ein platformunabhängiges C++ GUI kommt, welches über schönes und modernes C++ implementiert wurde.
    Artchi soll sich mal sputen. 😃

    Grüssli



  • Dravere schrieb:

    Und nein, ich träume nicht von std::gui . Würde meiner Meinung nach überhaupt nicht in den Standard passen. Es wäre aber mal an der Zeit, dass irgendwo ein platformunabhängiges C++ GUI kommt, welches über schönes und modernes C++ implementiert wurde.
    Artchi soll sich mal sputen. 😃
    Grüssli

    Wer oder was ist Artchi?


  • Administrator

    stefanjann schrieb:

    Wer oder was ist Artchi?

    Ein Forumsmitglied:
    http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-4508.html

    Grüssli 😉



  • Wenn ich duke nukem forever durchgespielt habe, kann ich mir mal diese Wundergui anschauen....


Anmelden zum Antworten