Neuerungen in der Windows-Programmierung seit Windows NT



  • 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.



  • Artchi schrieb:

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

    Wenn dieser jemand alles richtig gemacht hat, dann gibt es wahrscheinlich keine Probleme. Ich durfte es so kennenlernen, dass "alles richtig" gibt es nicht. Irgendwas z.B. in den Einstellungen wird doch fehlen, irgendwelche Pfade stimmen nicht überein, irgendwelche Compiler-Parameter wurden für Debug gemacht, aber nicht für Release, bäh...
    Ich habe mir neulich übrigens Visual Studio 2010 installiert, um es sich noch mal anzutun und was sehe ich beim Starten: Die Registrierung ist erforderlich, um dieses Produkt weiterhin zu nutzen. Bäh...



  • abc.w schrieb:

    Wenn dieser jemand alles richtig gemacht hat, dann gibt es wahrscheinlich keine Probleme. Ich durfte es so kennenlernen, dass "alles richtig" gibt es nicht. Irgendwas z.B. in den Einstellungen wird doch fehlen, irgendwelche Pfade stimmen nicht überein, irgendwelche Compiler-Parameter wurden für Debug gemacht, aber nicht für Release, bäh...

    Und das kann natürlich mit einem Makefile nicht passieren? Das Make kann hell sehen und es kann keine menschlichen Fehler im makefile geben? Mach dich nicht lächerlich!

    Ich habe mir neulich übrigens Visual Studio 2010 installiert, um es sich noch mal anzutun und was sehe ich beim Starten: Die Registrierung ist erforderlich, um dieses Produkt weiterhin zu nutzen. Bäh...

    Und was hat das jetzt mit deiner eigentlichen Frage zu tun? Nichts! Wenn du es nicht registrieren willst, kannst du es nicht benutzen. Pech für dich! Keiner zwingt dich. Aber beschwere dich auch nicht.

    MS-Bashing ist sooo 80er.



  • Artchi schrieb:

    abc.w schrieb:

    Wenn dieser jemand alles richtig gemacht hat, dann gibt es wahrscheinlich keine Probleme. Ich durfte es so kennenlernen, dass "alles richtig" gibt es nicht. Irgendwas z.B. in den Einstellungen wird doch fehlen, irgendwelche Pfade stimmen nicht überein, irgendwelche Compiler-Parameter wurden für Debug gemacht, aber nicht für Release, bäh...

    Und das kann natürlich mit einem Makefile nicht passieren? Das Make kann hell sehen und es kann keine menschlichen Fehler im makefile geben? Mach dich nicht lächerlich!

    Das kann natürlich passieren. Jemand könnte sich in einem Makefile so austoben, dass keiner mehr durchblickt.

    Artchi schrieb:

    Ich habe mir neulich übrigens Visual Studio 2010 installiert, um es sich noch mal anzutun und was sehe ich beim Starten: Die Registrierung ist erforderlich, um dieses Produkt weiterhin zu nutzen. Bäh...

    Und was hat das jetzt mit deiner eigentlichen Frage zu tun? Nichts! Wenn du es nicht registrieren willst, kannst du es nicht benutzen. Pech für dich! Keiner zwingt dich. Aber beschwere dich auch nicht.

    Mit meiner Frage hat damit was indirekt zu tun. Ich habe gestern mit dem Gedanken gespielt - weil ich diesen Thread gelesen habe - das eine oder andere Beispiel aus dem Petzold Buch noch mal durchzuarbeiten, mit Visual Studio 2010. Ich habe keine Probleme damit zu sagen, diese Software ist unbenutzbar. Ich starte es und es geht nicht. Punkt. Ich denke mir doch nichts aus. Pech für Microsoft!

    Artchi schrieb:

    MS-Bashing ist sooo 80er.

    Nein, ich bin eher durch die GNU-Tools und die damit verbundene Freiheit zu verwöhnt 😞



  • Habe mir jetzt auch auf Empfehlung von euch Visual C++ Express heruntergeladen
    und auch bereits registriert( keine Telefonnummer, Straße etc. notwendig ).
    Ich hatte am Anfang einige Probleme, weil VC mir ein Beispielprogramm
    vorgesetzt hatte, dass aus einem Gewirr von Headern und Quellcodedateien
    bestandt. Habe mich dann aber zurecht gefunden und habe ein leeres
    Projekt mit einer Quelldatei erstellt, dass direkt compiliert wurde und lief.
    Doch noch eine Frage: Bauen die GDI+ und Direct2D auf der GDI auf?



  • Nein, GDI+ iste die C++-Variante der GDI auf. Direct2D baut hingegen auf Direct3D auf.

    Siehe auch die Grafik 1 auf http://blogs.msdn.com/b/directx/archive/2009/09/29/comparing-direct2d-and-gdi.aspx



  • abc.w schrieb:

    Pech für Microsoft!

    Berücksichtigt man das Du eines der besten Entwicklungswerkzeuge der aktuellen Zeit wegen ner Trivialität wegschmeißt dann eher: Pech für Dich.



  • abc.w schrieb:

    irgendwelche Compiler-Parameter wurden für Debug gemacht, aber nicht für Release

    Das passiert wohl eher Leuten, die sich keine 5 Minuten mit der IDE auseinandersetzen. Wer für alle Builds Änderungen machen will, kann das auch ganz einfach machen.

    Und ganz ehrlich, ich mache Projekteinstellungen doch lieber in einem schönen Dialog mit definierten Auswahlmöglichkeiten, als noch selber Makefiles zu schreiben. Das ist komfortabler und weniger fehleranfällig.



  • double-b! Da du Windows XP hast, kannst und mußt du GDI oder GDI+ benutzen. Und die APIs funktionieren ja auch weiterhin unter Windows 7. Wenn du sie also benutzt, wird dein Programm weiterhin auf 7 laufen.

    Wegen dem Projekt-Wizard in VC++: du kannst im Wizard, wenn du die Steps durch gehst, z.B. einstellen, das ein leeres Projekt erstellt wird. Ein Grundgerüst-Projekt (egal in welche Programmiersprache, Framework etc.) sollte man nur dann nutzen, wenn man dessen Code auch verstehen kann.



  • _matze schrieb:

    Das passiert wohl eher Leuten, die sich keine 5 Minuten mit der IDE auseinandersetzen. Wer für alle Builds Änderungen machen will, kann das auch ganz einfach machen.

    Ja, als Ergänzung für die anderen: es gibt in der Konfigurations-Combobox drei Werte:
    1. Debug
    2. Release
    3. Alle

    Und anscheinend wissen ein paar Spezies nicht, das es Debug und Release gibt. Sonst hätten sie es ja ausprobiert und den Fehler selbst bemerkt. 😉 Ich mache das meistens so, das ich immer "Alle" auswähle. Dann werden die nachfolgenden Projekteinstellungen gleich für Debug und Release übernommen.

    Eigentlich sehr einfach. Vielleicht zu einfach? 😮

    _matze schrieb:

    Und ganz ehrlich, ich mache Projekteinstellungen doch lieber in einem schönen Dialog mit definierten Auswahlmöglichkeiten, als noch selber Makefiles zu schreiben. Das ist komfortabler und weniger fehleranfällig.

    Vorallem kommt ja am Ende auch nur eine Textdatei raus, die man auch in einem Texteditor lesen und sogar bearbeiten kann. abc.w scheint wohl zu denken, das die Einstellungen binär sind. Aber dabei ist der Projekteinstellungs-Dialog nur eine grafische Sicht auf die Texteinstellungen. Ich finde das auch viel komfortabler.



  • abc.w schrieb:

    Die Registrierung ist erforderlich, um dieses Produkt weiterhin zu nutzen.

    Diese Registrierung gibt es anscheinend nur bei den kostenlosen Versionen. Weder bei den in Boxen verkauften, noch bei den MSDN-Downloads habe ich das bisher gesehen.

    Artchi schrieb:

    es gibt in der Konfigurations-Combobox drei Werte:
    1. Debug
    2. Release
    3. Alle

    Wenn man weitere Buildkonfigurationen z.B. x64 hat, stehen da noch viel mehr.

    Aber in dem Punkt sind z.B. neuere C++ Builder dem Visual Studio überlegen, da gibt es ein paar praktische Features:
    http://docwiki.embarcadero.com/RADStudio/XE/de/%C3%9Cbersicht_%C3%BCber_Optionsgruppen

    Artchi schrieb:

    _matze schrieb:

    Und ganz ehrlich, ich mache Projekteinstellungen doch lieber in einem schönen Dialog mit definierten Auswahlmöglichkeiten, als noch selber Makefiles zu schreiben. Das ist komfortabler und weniger fehleranfällig.

    Vorallem kommt ja am Ende auch nur eine Textdatei raus, die man auch in einem Texteditor lesen und sogar bearbeiten kann.

    Witzigerweise benutzt ja z.B. das Installationsprogramm von OpenCV Python und CMake um Visual Studio Projektdateien zu erzeugen ...



  • Eine der größten Neuerungen seit NT ist, dass man den Rechner nicht mehr neustarten muss, wenn die Mauskoordinaten sich geändert haben.


Anmelden zum Antworten