MFC vs. Win32
-
Hallo,
mir ist sehr oft aufgefallen das viele bekannte Spiele in MFC programmiert wurden, jedenfalls sehe ich viele DLL Dateien die mit MFC gemacht wurden.
Ich habe damals null in MFC kapiert und hab es sofort gelassen, habe mit Win32 mehr Spass.
Aber kann mir einer sagen was an MFC besser sein, oder ob es überhaupt besser ist als alles andere. Ist man da nicht eingeschränkt bei MFC?
Sehe ich das richtig das viele Spiele mit MFC gemacht wurden?
Danke im voraus.
Gruß
-
Hallo
Edenus schrieb:
Hallo,
mir ist sehr oft aufgefallen das viele bekannte Spiele in MFC programmiert wurden, jedenfalls sehe ich viele DLL Dateien die mit MFC gemacht wurden.
Ich habe damals null in MFC kapiert und hab es sofort gelassen, habe mit Win32 mehr Spass.
Aber kann mir einer sagen was an MFC besser sein, oder ob es überhaupt besser ist als alles andere. Ist man da nicht eingeschränkt bei MFC?
Sehe ich das richtig das viele Spiele mit MFC gemacht wurden?
Danke im voraus.
GrußIch bin echt keine Experte, aber dass viele Spiele mit den MFC gemacht werden, halte ich doch für eine Gerücht.
chrische
-
Edenus schrieb:
Sehe ich das richtig das viele Spiele mit MFC gemacht wurden?
Meines Wissens nicht. Erstens achten diverse Spielefirmen darauf, ihre Spiele auch auf anderen Plattformen lauffähig zu bekommen. Und dann ist MFC ein unnötiger Mehraufwand beim Portieren. Und zweitens ist MFC doch sowieso nur für das Framework zu gebrauchen. Und da macht zB Win32 mehr Spass, zumindest geht es mir so.
IMO verwenden, wenn überhaupt, eher Hobbyprogrammierer MFC für Spiele. Professionelle Firmen werden davon eher die Finger lassen, zumindest beim eigentlichen Spiel. Evtl. werden ja einige Entwicklungstools, wie zB ein Map-Editor, mit MFC gemacht.
-
Neee ! Die Spiele werden in Win32 Programmiert und das ist auch nur ein Teil... Das Rahmenfenster hast du nach 1 Stunde als Anfänger gerrafft... Dann kommt der Komplizierte Teil: DirektX NUR DIREKTX !
MFC wird höchstens für das Autostart Menü oder für das OptionsDialog (außerhalb des Spiels) verwendet.
-
Ok, mir ist nur oft aufgefallen das in den Stammverzeichnissen von Spielen z.B. Max Payne 2 sehr viele MFC DLLs enthalten waren, und das waren nicht gerade wenig. Und die Namen der DLLs sagen auch schon einiges über deren Anteil im Spiel aus, daher dachte mir die nutzen immer MFC.
Ich habe letztens eine Doku gesehen, da haben die die Entwicklungsphase von Siedler 5 (oder 4?) gezeigt, die haben auch die Programmierer gezeigt, und auf dem Bildschirm, wenn ich mich nicht täusche, habe ich Dev-C++ gesehen, also die IDE, und Dev-C++ kann ja nur Win32 meines Wissens nach, also war mein Glauben bisher wohl richtig das die alles in Win32 und DirectX programmieren.
Noch eine kleine Frage nebenbei: In Spielen kann ich manchmal auswählen welche DirectX Version das Spiel nutzen soll, bei DirectX 9 sackt mein PC immer zusammen in Sachen FPS, bei Version 8 läuft das wie Butter. Muss ich da was beachten bei dxDiag (Diagnoste- und Optionstool von DX)?
-
Also ich kenne jetzt Max Pane nicht. Aber könnte es sein, das dieses Spiel einen Leveleditor hat (oder wie man heute cooler sagt "MOD-Editor")???
Weil dann kann ich mir gut vorstellen, das für Leveleditoren die MFC benutzt wird. Denn natürlich programmieren auch die Spieleschmieden Inhouse-Tools, und das machen die bestimmt nicht mit Win32, sondern wohl eher mit der MFC.
Was ich mir auch vorstellen kann, ist das aus der MFC z.B. die ganzen Netzwerk-Klassen usw. benutzt werden. Die MFC ist ja nicht nur für Formulare gut, sondern man kann auch in einem Konsolen-Projekt sich viel Arbeit mit der MFC sparen, anstatt die Win-API zu benutzen.
-
Um deine Frage zu beantworten:
MFC sind die Microsoft Foundation Classes, welche im Prinzip erst mal nichts weiter sind als ein objektorientierter Wrapper um die Win32-API. Außerdem stellen sie noch andere Funktionen zur Verfügung, wie z.B. Klassen, um einfach Drucken bzw. Druckvorschau, Serialisierung von Klassen, Dokumentenmanagement, Dialogfenster, etc. zu implementieren.
Es *kann* sein, dass die Verwendung der MFC erst mal komplizierter ist/erscheint als plain Win32-API, aber dafür erhälst du damit einen extrem mächtigen Wrapper um eben jene API mit Funktionen, welche du sonst alle selbst schreiben müsstest, mit gleichem oder mehr Aufwand. Ich persönlich finde auch, dass die MFC eher ein netter Versuch waren als eine wirklich durchdachte Schnittstelle (aber ich arbeite noch nicht lange damit). Der Mächtigkeit der MFC-Klassen tut dies allerdings trotzdem keinen Abbruch.
Und jetzt wird auch klar, warum Spiele eben NICHT "in" MFC geschrieben werden: Die MFC stellen erst mal Funktionen zur Verfügung, die Win-API zu kapseln, und Spiele setzen typischerweise auf der DirectX-API auf
. Allerdings ist es durchaus wahrscheinlich, dass Windows-Spiele für sämtliche von den MFC gekapselten WinAPI-Funktionen auch eben die MFC nutzen.