Neuerungen in der Windows-Programmierung seit Windows NT



  • @Artchi
    Sollte ich also eher die MSDN zum Lernen nutzen?



  • double-b schrieb:

    Seit ich vor einigen Wochen einen Thread zu der Frage, was
    ich nach den C++ Grundlagen lernen sollte, eröffnet hatte,
    habe ich mir jetzt den Klassiker unter den Windows-Programmierbüchern
    gekauft:"Windows-Programmierung von Charles Petzold".

    Alle Beispiele in diesem Buch sind in C geschrieben und es werden davon gute Kenntnisse vorausgesetzt...



  • double-b schrieb:

    @Artchi
    Sollte ich also eher die MSDN zum Lernen nutzen?

    Du willst C++ programmieren? Und dann willst du Windows-Programme in C++ programmieren?

    Die MSDN ist am Anfang undurchsichtig und man verliert sich schnell. Stimmt. Aber im Prinzip ist es eine Goldgrube an Informationen zur Windows Programmierung. Ist auch ganz logisch: wer außer MS selber sollte diese Informationen besser bereit stellen können?

    Wenn du Windows 7 hast, wird auch in Tutorials gezeigt, wie man die ganzen tollen Windows 7 GUI Features (Animationen usw.) nutzen kann.

    Auf der Windows SDK Seite sind unter (3) Develop Windows Applications die wichtigsten Einstiegspunkte zu finden. Auch einen speziell für Learn to Program for Windows in C++.

    Ich finde das alles recht gut und ausführlich erklärt!



  • Ist der Petzold jetzt deiner Meinung nach ungeeignet um in die Windows
    Programmierung einzusteigen? Mir geht es darum, dass der Petzold doch recht
    reich an Informationen ist und ich nicht am Ende einige Kapitel unsinnig
    gelesen habe, da bereits modernere und bessere Wege zur Verfügung stehen
    ( Direct2D ist ja nur für Windows 7 verfügbar und damit im ersten Moment
    nicht relevant, da ich unter Windows XP programmmiere ).



  • Für die Windows-Grundlagen kannst du den Petzold benutzen. Wenn du das Buch schon gekauft hast. Aber ich kann mir vorstellen, das irgendwann Dinge drin stehen, die man vielleicht sinnlos lernt, weil es dafür Alternativen gibt. Aber die Grundlagen sind natürlich nie veraltet.



  • Ich habe das Buch sehr billig erstanden, im Zweifelsfall kann ich mir auch
    ein anderes Buch kaufen, doch welches? Gibt es ein anderes Buch das soviel
    Informationen enthält( 1349 Seiten sind ziemlich viel ) ? Könntest
    du ein gutes Buch zur Windows Programmierung empfehlen?



  • Für einige Bereiche der Windows-Programmierung gibt es schon noch aktuelle Bücher (in Englisch):

    Jeffrey Richters "Windows via C/C++" behandelt elementare Dinge wie Prozesse, Threads und DLLs, halt die nicht GUI bezogenen Teile.
    Die aktuelle 5. Auflage des Buches ist auf dem Stand von Vista, die 4. auf dem von Windows 2000, die dritte auf dem von NT. Wenn man die mal querliest, sieht man, wie viel sich geändert hat.

    Eine Ergänzung des Petzolds in Richtung Windows 7 ist Microsofts "Introducing Windows 7 for Developers". Das Buch spannt einen Bogen von der WinAPI über C# bis zu Silverlight. Ist vielleicht ganz interessant, damit man mal sieht, was es alles so gibt.

    Auf im MSDN gibt es ganze Artikelserien zur Windows Programmierung in C++, im Stil etas moderner als der Petzold:
    http://msdn.microsoft.com/en-us/library/ff381399.aspx
    http://msdn.microsoft.com/en-us/library/ff708696.aspx
    http://msdn.microsoft.com/en-us/library/gg675934.aspx



  • double-b schrieb:

    Ist der Petzold jetzt deiner Meinung nach ungeeignet um in die Windows
    Programmierung einzusteigen?

    Wenn es Dir um die Windows Programmierung an sich geht, dann ist Windows API und C++ einfach der falsche Ansatz. Die gravierenste Neuerung seit NT/98 ist nunmal das .NET Framework und das läßt sich (subjektiv, jaja) ín C# viel besser und leichter programmieren als in C++. .NEt und C# ist imho die erste Wahl wenns darum geht Windows-Programme zu schreiben. WindowsAPI und C++ sind nur für Bereiche spannend die im Framework fehlen.



  • loks schrieb:

    Die gravierenste Neuerung seit NT/98 ist nunmal das .NET Framework und das läßt sich (subjektiv, jaja) ín C# viel besser und leichter programmieren als in C++.

    Das kann man auch objektiv mit ruhigem Gewissen sagen 😃



  • loks schrieb:

    Windows Programmierung an sich

    Kommt drauf an, was man darunter versteht.

    Wenn man erstmal die Grundlagen verstehen will, ist ein Anfang mit dem Petzold vielleicht gar nicht so schlecht. Wenn man mit C# anfängt und dann in den Petzold schaut, wirft man ihn wahrscheinlich gleich wieder weg. 😃

    loks schrieb:

    Die gravierenste Neuerung seit NT/98 ist nunmal das .NET Framework und das läßt sich (subjektiv, jaja) ín C# viel besser und leichter programmieren als in C++.

    Da stimme ich zu.

    loks schrieb:

    .NEt und C# ist imho die erste Wahl wenns darum geht Windows-Programme zu schreiben.

    In den allermeisten Fällen ja.

    loks schrieb:

    WindowsAPI und C++ sind nur für Bereiche spannend die im Framework fehlen.

    Das können aber durchaus interessante Dinge sein, wie z.B. hardwarenahe Programmierung und alles was mit 3D zu tun hat (OpenGL, DirectX, ...).



  • double-b schrieb:

    Ich habe das Buch sehr billig erstanden, im Zweifelsfall kann ich mir auch
    ein anderes Buch kaufen, doch welches? Gibt es ein anderes Buch das soviel
    Informationen enthält( 1349 Seiten sind ziemlich viel ) ? Könntest
    du ein gutes Buch zur Windows Programmierung empfehlen?

    Fang einfach mit dem Petzold an. Es ist ja nicht ganz verkehrt.

    Ein Buch kann ich dir nicht empfehlen. Weil ich die Erfahrung gemacht habe, das man mit den Tutorials der MSDN (siehe gepostete URLs von nn) und ein paar aus privaten Homepages sehr gut die Win32-API Grundlagen lernen kann, z.B. http://www.win-api.de/tutorials.php. Denn hat man einmal das Konzept verstanden, kann man den Rest in der MSDN recherchieren.

    Oder auch auf www.codeproject.com findet man viele Artikel. Z.B. zu den UI-Controls: http://www.codeproject.com/Chapters/1/Desktop-Development.aspx. Da gibt es aber noch mehr Artikel zu allem möglichen Windows-Themen (siehe linke Seitenleiste).



  • Welche Themen sollte ich denn im Petzold überspringen, die heute nicht mehr
    aktuell sind?



  • double-b schrieb:

    Welche Themen sollte ich denn im Petzold überspringen, die heute nicht mehr
    aktuell sind?

    WinAPI 🙄 🤡



  • BierzeltOmi schrieb:

    WinAPI 🙄 🤡

    Inwiefern ist die WinAPI denn nichtmehr aktuell 😕

    GPC schrieb:

    loks schrieb:

    Die gravierenste Neuerung seit NT/98 ist nunmal das .NET Framework und das läßt sich (subjektiv, jaja) ín C# viel besser und leichter programmieren als in C++.

    Das kann man auch objektiv mit ruhigem Gewissen sagen 😃

    Eigentlich müsste man sagen: Das kann man in C++ garnicht programmieren 😉

    Anyway, natürlich gibt es für Anwendungsentwicklung heute bei weitem bessere Möglichkeiten als C++ und WinAPI (.NET 👍 ). Das bedeutet aber nicht dass WinAPI veraltet/bedeutungslos/whatever ist. WinAPI ist immer noch per Definition der Weg um mit dem OS zu kommunizieren, also sind auch all die "modernen Alternativen" letztendlich von der WinAPI abhängig. Es hängt eben wie immer ganz davon ab was man machen will...



  • ich denke du solltest den GUI Teil überspringen, der ist heutzutage kaum noch relevant :o



  • double-b schrieb:

    Welche Themen sollte ich denn im Petzold überspringen, die heute nicht mehr aktuell sind?

    Ich würde sagen, alle Stellen mit "Windows 98"... Ich habe das Buch auch mal gelesen, vor ein Paar Jahren und nur hobbymäßig, und auf Kapitel u.a. mit Bitmaps, Paletten, Text und Schriftarten verzichtet, im Prinzip alle Stellen ausgelassen oder nur drübergeschaut, wo ich den Eindruck hatte, diese gehen in Richtung "Klicki-Bunti".
    Übrigens, alle Beispiele, die ich ausprobiert hatte, habe ich mit mingw ausprobiert. Kurze Makefiles geschrieben und in der Eingabeaufforderung mit make gebaut. Mit dieser Methode habe ich irgendwie das beruhigende Gefühl der "sicheren Reproduzierbarkeit", Compiler Parameter usw. Mit Visual Studio kann man, glaube ich, aus einem Projekt ein Makefile generieren. Ansonsten, weiss nicht, was man von einem Visual Studio Projekt sichert, es gibt zig temporäre Dateien...
    Ich muss zugeben, ich habe es vor längerer Zeit gemacht und seitdem nichts wiederholt und den Stoff nie wirklich gebraucht - sprich, alles vergessen, aber ich weiss nur ungefähr, falls ich was brauchen sollte, wo ich es im Buch nachschauen könnte :p



  • abc.w schrieb:

    Übrigens, alle Beispiele, die ich ausprobiert hatte, habe ich mit mingw ausprobiert. Kurze Makefiles geschrieben und in der Eingabeaufforderung mit make gebaut. Mit dieser Methode habe ich irgendwie das beruhigende Gefühl der "sicheren Reproduzierbarkeit", Compiler Parameter usw. Mit Visual Studio kann man, glaube ich, aus einem Projekt ein Makefile generieren. Ansonsten, weiss nicht, was man von einem Visual Studio Projekt sichert, es gibt zig temporäre Dateien...

    Was das Gefühl der "sicheren Reproduzierbarkeit" angeht: Schonmal dran gedacht dass das offizielle Windows SDK nicht für mingw sondern für MSVC ausgelegt ist und überlegt woher die libs bzw. Header wohl kommen die dein mingw verwendet? Imo müsste man schon allein nach der Überlegung mingw für Windowsentwicklung für immer abschreiben. MSVC ist einfach der native Compiler für Windows. Er ist vielleicht nicht Open Source aber genauso frei verfügbar wie mingw (im offiziellen Windows SDK enthalten). Wenn du mich fragst ist die Sache was das angeht damit ziemlich einfach: Linux -> GCC, Windows -> MSVC. Dass man aus VS Projekten Makefiles generieren kann ist afaik auch schon wieder ein paar Jahrzehnte her, aber wen interessieren Makefiles anyway (wir reden hier über Windows)!? Und ja, VS erzeugt alle möglichen temporären Dateien, z.B. ne IntelliSense Datenbank oder irgendwelche benutzerspezifischen Einstellungen (z.B. welche Tabs du zuletzt in der IDE offen hattest), Build Logs, etc. Das Projekt ist trotzdem nur eine Datei und in der ist alles drin was auch in deinem Makefile drin wär, vermutlich sogar um einiges mehr 😉



  • dot schrieb:

    Was das Gefühl der "sicheren Reproduzierbarkeit" angeht: Schonmal dran gedacht dass das offizielle Windows SDK nicht für mingw sondern für MSVC ausgelegt ist und überlegt woher die libs bzw. Header wohl kommen die dein mingw verwendet? ...

    Nein, ich habe damals daran nicht gedacht. Es hat halt so funktioniert, es gab hie und da Stolpersteine, aber es ging.
    Ich meine u.a. noch folgendes. Hier ein Beispiel meines Makefiles zum Kapitel 21 "Dynamische Bibliotheken":

    all:
    	mingw32-gcc -c -DBUILD_DLL EdrLib.c
    	mingw32-gcc -shared -o EdrLib.dll -Wl,--out-implib,libEdrLib.a EdrLib.o -mwindows
    	mingw32-gcc EdrTest.c -o EdrTest.exe -pedantic -Wall -mwindows -ggdb -L./ -lEdrLib
    

    Ich stelle mich jetzt hin und sage, so habe ich das eine Beispiel aus diesem einen Kapitel gebaut. Du könnte jetzt hingehen und das Beispiel aus dem Buch noch mal abtippen und mit diesem Makefile bauen. Einfach make in der Konsole eingeben. Das Ergebnis sind EdrTest.exe und EdrLib.dll. (Verwendete gcc Version: mingw32-gcc.exe (GCC) 3.4.5 (mingw-vista special r3)).
    Wie würdest du mir jetzt in diesem Forum mitteilen, wie ich das gleiche unter Visual Studio hinkriege? Klicke da und da, öffne dies und jenes, bestätige hier usw. oder gibt es, keine Ahnung, irgendwelche anderen Möglichkeiten? Wie könnte ich das, was du auf deinem Rechner gemacht hast, mit meinem Visual Studio auf meinem Rechner reproduzieren? Möglichst einfach...



  • abc.w schrieb:

    Wie würdest du mir jetzt in diesem Forum mitteilen, wie ich das gleiche unter Visual Studio hinkriege?

    Ich könnte dir z.B. die Commandline für MSVC posten...

    abc.w schrieb:

    Wie könnte ich das, was du auf deinem Rechner gemacht hast, mit meinem Visual Studio auf meinem Rechner reproduzieren? Möglichst einfach...

    Indem ich dir die Visual Studio Projektdatei schicke...das wär aktuell die .vcxproj Datei, und das ist einfach ein vollwertiges MSBuild (ebenfalls frei verfügbar) Project File, d.h. du kannst das VS Projekt das ich dir schicke sogar ganz ohne Visual Studio, einfach nur mit den offiziellen, frei verfügbaren Tools aus der Commandline builden wenn du willst...

    msbuild myproject.vcxproj
    


  • Building on the Command Line

    Wo das Problem ist, ein VC-Projekt von jemand anderem zu benutzen, will sich mir nicht erschließen.


Anmelden zum Antworten