Hintergrund für Windowsprogrammierung
-
net schrieb:
rüdiger schrieb:
Für Anfänger ist die WinAPI-Gift, da sie extrem schlecht designt ist.
winapi ist 'historisch gewachsen'
die steckte schon in windows 1.0 und ich glaub' die ersten versuche damit machte m$ im textmodus...Das glaube ich. Da hat irgend wer eine erste API hingewürfelt und die wurde dann mit jedem neuen Release aufgebläht und zurecht gepatcht.
SideWinder schrieb:
Was auch immer dieses fltk sein soll, ein Framework das heutzutage noch fixe Positionsangaben für Komponenten benützt ist mir zu ekelhaft
FLTK kann das auch anders. Ich hab einfach nur das erst beste Beispiel kopiert.
minhen schrieb:
Was für ein blödsinniger Schwachsinn.
Du brauchst mir nicht ein Hello World als Beispiel zeigen. Vermutlich im Gegensatz zu dir hab ich schon mit der WinAPI gearbeitet und weiß, wovon ich rede. WinAPI ist umständlich insofern als dass man viel Code hat. Aber hättest du mal mit der WinAPI gearbeitet und wüsstest du, wovon du redest, wäre dir auch klar, dass sich das Hello World der WinAPI auf:
TextOut(hdc, 0, 0, TEXT("Hello World!"), 12);
beschränkt. Der Rest ist letztlich Copy & Paste. Das Witzige an deinem dämlichen Beispiel ist auch noch, dass das nur die Initilaisierungssachen sind. Das gröbste ist damit erledigt.
Willst du den Fensterstil ändern? Ändere die Zeile:
WS_OVERLAPPEDWINDOW, // Fensterstil
Soll sich der Mauszeiger über deinem Fenster ändern? Änder die Zeile:
wndclassex.hCursor = LoadCursor (NULL, IDC_ARROW);
Und so weiter. Es ändert sich praktisch nichts am Anfangscode. Und der ist Copy & Paste.
Wie gesagt, viel zu Fuß (und damit viel Text) aber schrecklich einfach.blablabla. Interessiert mich alles ein feuchten Furz. Ich habe auch mal mit der WinAPI gearbeitet. Aber ich habe daraus keine Religion gemacht. Vielleicht ist das Beispiel übertrieben lang, aber es zeigt womit man sich da rumschlagen muss. Das ist redundant, umständlich und absolut überfordernd für jemand, der einfach nur ein paar Fenster zeichnen will.
Also spar dir deinen dummen Text von "So ein Blödsinn.". Zeig doch mal her, wie du in fltk ein Fenster machst, welches:
- an der eingestellten Standard-Position für neue Fenster in Windows erscheint
- einen modifizierten Mauszeiger lädt, wenn man über das Fenster fährt
- einen dicken Fensterrahmen, kein Fenstermenü, keine Titelleiste
hat. Beim WinAPI-Code ändert sich praktisch nichts durch diese Anforderungen.Keine Ahnung. Aber es würde mich wundern, wenn es umständlich wäre. Natürlich muss man Code hinzufügen. Aber da zeigst du ja wunderbar auf, was das Problem der WinAPI ist. Man muss sich mit irgend welchen minimal Sachen rumschlagen. Wozu sollte ich meiner Anwendung explizit sagen, das es den Standard-Mauszeiger laden soll und den Standard-Style und an der Standard-Stelle erscheinen soll, wenn ich das eh 98% der Zeit so haben will. Wenn ich es eben anders will, füge ich ein paar Zeilen Code hinzu und basta.
-
rüdiger schrieb:
blablabla. Interessiert mich alles ein feuchten Furz.
Eben, das ist das Problem. Aber trotzdem schreist du laut rum und bezeichnest andere Meinungen als Blödsinn. Ich mache auch keine Religion aus der WinAPI aber du machst aus alles anderem und WinAPI-Hassen eine Relgion. Und das ist erbärmlich.
Lies noch mal ganz genau, was ich zur WinAPI geschrieben habe. Umständlich und viel Code, aber schrecklich primitiv und einfach.Vielleicht mal ein Vergleich, vielleicht verstehst du es dann:
Mit einem Speer auf die Jagd gehen ist sehr mühsam und umständlich, aber den Speer verstehen ist furchtbar einfach und simpel. Beides eine Folge der Primitivität.
Mit einem Maschinengewehr auf die Jagd gehen ist furchtbar bequem, aber versuch die Technik vom Maschinengewehr zu verstehen und du hast den Salat im Vergleich zum Speer.Jetzt klarer was ich die ganze Zeit sage? Nur zur Sicherheit: die WinAPI ist der Speer ...
-
minhen schrieb:
rüdiger schrieb:
blablabla. Interessiert mich alles ein feuchten Furz.
Eben, das ist das Problem. Aber trotzdem schreist du laut rum und bezeichnest andere Meinungen als Blödsinn. Ich mache auch keine Religion aus der WinAPI aber du machst aus alles anderem und WinAPI-Hassen eine Relgion. Und das ist erbärmlich.
Nö, ist mir eigentlich ziemlich egal die WinAPI. Ich versuch den Leuten hier nur zu helfen. Aber bitte: benutzt die WinAPI wie ihr es wollt. Interessiert mich echt nicht.
Lies noch mal ganz genau, was ich zur WinAPI geschrieben habe. Umständlich und viel Code, aber schrecklich primitiv und einfach.
primitiv sicher. einfach nicht.
-
rüdiger schrieb:
primitiv sicher. einfach nicht.
Da du erst unsicher die Wikipedia zitierst und dann vermutest, dass das eventuell unnötig viel Code sei (was es nicht ist), denke ich, hast du wohl kaum die notwendige Kenntnis der WinAPI um das beurteilen zu können. Und erst recht nicht um dich so weit aus dem Fenster zu lehnen, wie du es hier getan hast.
-
minhen schrieb:
rüdiger schrieb:
primitiv sicher. einfach nicht.
Da du erst unsicher die Wikipedia zitierst und dann vermutest, dass das eventuell unnötig viel Code sei (was es nicht ist), denke ich, hast du wohl kaum die notwendige Kenntnis der WinAPI um das beurteilen zu können. Und erst recht nicht um dich so weit aus dem Fenster zu lehnen, wie du es hier getan hast.
Wunderbar, wenn das also nicht zu viel Code ist. Dann gibst du mir also recht, das es zu umfangreich ist für einen Anfänger?
-
*g* High-Level API vs Low-Level API
Alles hat seine Daseins-Berechtigung, aber prügelt euch nur weiter.
-
Da freut sich aber jemand etwas vermeintlich gefunden zu haben. Aber nein, ich bin mir zwar durchaus bewusst, dass es bei der heutigen PISA-Jugend, wo viele schon von drei zusammenhängenden Sätzen überfordert sind (sieht man leider viel zu oft auch hier im Forum), problematischer sein kann. Doch grundsätzlich folgt aus "viel Text" in keinster Weise "schwer zu verstehen". Und das gilt so auch für die WinAPI.
-
Mit WinAPI kann man immer noch alles schrieben was man brauch, obwohl sie schon so alt ist -> WinAPI das beste wo gibt.
-
HALLO.
erstmal danke für eure vielen antworten. wollte eigentlich nicht unbedingt eine grundsatzdiskussion anstossen. aber trotzdem interessant zu lesen, was die meinungen verschiedener programmierer sind.
rüdiger schrieb:
Wenn du also keine Windows-Systeminternen-Sachen machen willst, sondern nur ein paar Fenster, Knöpfe und ähnliches haben willst, bieten sich andere GUI-Frameworks, wie fltk an.
nein, es muss nicht unbedingt windows-Systeminternen. was ich aber zum beispiel an der FLTK feststellen musste, ist die recht geringe dokumentation. da es nicht so oft wie MFC oder WinAPI verwendet wird, findet man halt leider weniger infos oder beispielprogramme dazu im netz. ich wollte halt gerne einen TRACKBALL in ein FLTK-OpenGL-window einfügen, hab das aber nicht ohne weiteres hinbekommen
net schrieb:
wie wär's, wenn du mal ein paar konkrete fragen im winapi forum stellst? vielleicht lernst du durch interaktion mit anderen besser als aus büchern...
naja, vom prinzip hast du ja recht, an beispielen und meinungsaustausch mit anderen lerne ich am besten. aber irgendwie will ich auch nicht bei jeder kleinigkeit, die ich nicht verstehe, im forum nachfragen.
SeppSchrot schrieb:
Wie auch immer, wo liegen denn jetzt deine Probleme?
Verlierst du in der API den Überblick oder haperts an den Sprachkenntnissen?mein hauptproblem liegt daran, dass ich, wenn ich ein bestimmtes problem habe, ich oft einfach nicht die quelle zur lösung finden kann. und wie zuvor beschrieben kann es doch einfach nicht sein, dann immer hier im forum zu posten.
viele grüsse,
STICK!
-
Da das Beispiel fltk nicht das macht, was das WinAPI-Beispiel macht, müsst Ihr das hier auch gelten lassen:
#include <windows.h> int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { MessageBox(NULL, TEXT("Hello, World"), TEXT("Sample"), MB_OK | MB_ICONINFORMATION); return(0); }
Dieses kleine Sample bringt nicht nur Fenster und Buttons ins Spiel, sondern sogar auch Graphik. Das ist der Beweis: Fltk ist viel zu kompliziert.
BTW: Das rüdiger nicht weiß wovon er spricht, beweist er doch des Öfteren recht eindrucksvoll. Nehmt das zur Kenntnis, regt Euch nicht auf, das bringt doch nichts, Ihr wisst doch, wie merkbefreit er ist.
-
Gästchen schrieb:
BTW: Das rüdiger nicht weiß wovon er spricht, beweist er doch des Öfteren recht eindrucksvoll. Nehmt das zur Kenntnis, regt Euch nicht auf, das bringt doch nichts, Ihr wisst doch, wie merkbefreit er ist.
dann zeig mir doch bitte, wie leicht und übersichtlich die WinAPI ist.
-
rüdiger schrieb:
Gästchen schrieb:
BTW: Das rüdiger nicht weiß wovon er spricht, beweist er doch des Öfteren recht eindrucksvoll. Nehmt das zur Kenntnis, regt Euch nicht auf, das bringt doch nichts, Ihr wisst doch, wie merkbefreit er ist.
dann zeig mir doch bitte, wie leicht und übersichtlich die WinAPI ist.
Bei einem kleinen "Hello world" oder einem Taschenrechner ist die WinAPI wunderbar leicht und übersichtlich. Wir reden hier in dem Thread ja offensichtlich nicht über ernsthafte Anwendungen
-
TactX schrieb:
Wir reden hier in dem Thread ja offensichtlich nicht über ernsthafte Anwendungen
ich denke, dem kann ich nicht zustimmen. wer hat schon interesse daran, ein einfaches taschenrechnerprogramm zu schreiben? werden die programme wirklich umfangreich / komplex, kann man dann mit der WinAPI noch etwas angfangen (da dann zu viel code selber geschrieben werden muss)? oder doch lieber MFC oder eine eine GUI? kann die FLTK z.b. überhaupt 'alle' wünsche erfüllen, wo es sich doch hier um ein "minimalistisches Design" handelt?
DANKE.
STICK.
-
Also ich finde rüdiger hat vollkommen recht. Jeder Anfänger wird doch wohl besser mit einem Framework wie z.B. diesem FLTK oder QT oder sonst was zurecht kommen als mit der Win-API. Das ist doch ganz natürlich, da diese Sachen auf einem viel höheren Abstraktionslevel sind und so für den Benutzer logischer erscheinen.
Es mag ja viele unterschiedliche Meinungen geben, aber die, dass die WinAPI leichter zu erlernen ist, ist ja mal totaler Blödsinn.P.S. Ich hab auch schon mit der Win-API gearbeitet, bevor da was aus der Richtung kommt...
-
stick_thai schrieb:
kann die FLTK z.b. überhaupt 'alle' wünsche erfüllen, wo es sich doch hier um ein "minimalistisches Design" handelt?
FLTK habe ich nur einfach so rausgegriffen. Ob es 'alle' Wünsche erfüllen kann, weiß ich nicht. Aber es lässt sich wie die meisten Frameworks auch über anderen Code (zB WinAPI) erweitern. Wenn man also irgend wo an eine Grenze stößt, kann man sich weiter helfen.
Aber schau dir mal den Link an, den ich gepostet habe. Da findest du eine Liste von GUI-Frameworks.
-
nep schrieb:
Es mag ja viele unterschiedliche Meinungen geben, aber die, dass die WinAPI leichter zu erlernen ist, ist ja mal totaler Blödsinn.
Ich stelle ja aus gutem Grund schon keine hohen Ansprüche an Diskussionspartner im Internet, aber ihr schießt immer wieder den Vogel ab. Ist es wirklich so schwer Argumente anzuführen, so dass ihr nur "Blödsinn" sagen könnt? Echt schlimm.
WinAPI ist nicht schwer zu lernen, aber keine Freude zum Verwenden. Kann doch nicht so schwer zum verstehen sein.
-
minhen schrieb:
WinAPI ist nicht schwer zu lernen, aber keine Freude zum Verwenden. Kann doch nicht so schwer zum verstehen sein.
da zu fällt mir eigentlich nur folgendes ein:
minhen schrieb:
Ich stelle ja aus gutem Grund schon keine hohen Ansprüche an Diskussionspartner im Internet, aber ihr schießt immer wieder den Vogel ab. Ist es wirklich so schwer Argumente anzuführen, so dass ihr nur "Blödsinn" sagen könnt? Echt schlimm.
-
"Schwer" ist relativ. Natürlich kann es sein (bzw. ist es ja sogar auch), dass es auch nicht schwer ist die WinAPI zu erlernen. Nur ist es aber einfacher sich in ein Framework wie z.B. QT oder sonstiges einzuarbeiten als in die WinAPI.
Das fängt einfach schon damit an, dass das ganze Objektorientiert gehalten ist, während die WinAPI prozedural ist. Ich könnte sogar meiner Freundin halbwegs erklären wie síe sich so eine einfache GUI zusammenbauen kann, da es für den Menschen einfach natürlicher ist aus OO Sicht zu denken. Bei der WinAPI bezweifel ich das einfach mal. Und das hat nicht mal was mit dem Grundgerüst zu tun, was so groß ist. Das setzt sich ja so fort, wenn ich z.B. einen Dialog mit Buttons usw. designen will.
-
@nep: Komisches Argument. Natürlicher ist es doch wohl eher sich die GUI zusammenzuklicken und nur die Funktionalität dahinter auszuprogrammieren. Aber das hat nichts mit dem darunterliegenden Framework zu tun. Da kann WinAPI mit irgendwelchen C-Function Pointern drunter sein und da kann eine 4GL-Sprache drunter liegen.
MfG SideWinder
PS: Dieses Posting hat auch ein Recht auf Leben :p
-
Da hast du natürlich recht.
Nur was hat das mit der Diskussion zu tun ?Es ging ja jetzt nur ums reine Programmieren. Und da ist es ja wohl so, dass der OO-Ansatz für den Menschen verständlicher ist als der prozedurale