Sehe ich den Unterschied richtig? WinAPI / MFC
-
Sowohl WinAPI, als auch die MFC sind veraltet. Die WinAPI wird langsam auslaufen und schon in der nächsten Windows Version wird die WinAPI nur ein kompatibilitätslayer sein. Außerdem ist die WinAPI sehr umständlich und verführt Anfänger schnell zu einem schlechten Stil. Natürlich erlangt man viele Erkentnisse über Windows, die man mit einem Framework nicht erlangt, aber zunächst sind diese relativ uninteressant und die Erkentnisse werden veralten.
Die MFC ist vom Stil auch sehr schlecht und wird auch nur noch stiefmütterlich von Microsoft gepflegt.
Es gibt zahlreiche moderne Frameworks, die einem mehr bieten und besser zu programmieren sind. Ich verschieb den Beitrag mal in das GUI Forum.
-
kingruedi schrieb:
Sowohl WinAPI, als auch die MFC sind veraltet. Die WinAPI wird langsam auslaufen und schon in der nächsten Windows Version wird die WinAPI nur ein kompatibilitätslayer sein.
Das sehe ich anders (s. meinen Post ganz oben). Die MFC war zu lebzeiten Schrott, und kommt nun endlich dahin, wo sie hin gehört. Die WinAPI hingegen ist ein essentieller Bestandteil von Windows, und wird als solcher auch in Windows Vista noch zugehören. Selbst Microsoft schreiben nicht etwa 90% ihres Betriebssystems auf .NET oder ähnliches um, und die WinAPI da zu kappen ... Was bitte soll das bringen? Die WinAPI als Kapselung des .NET-Frameworks, welches seinerseits auf WinAPI basiert? Welche Logik!
Das beide veraltet sind will ich natürlich nicht bestreiten. Trotzdem ist es imho völliger Unsinn zu glauben, dass die WinAPI schon in dem Windows, das in weniger als 10 Monaten in den Läden stehen soll, dermaßen unter gegangen sein soll. Zu Blackcomb äußer ich mich da allerdings nicht.
-
Doch, da hat kingruedi recht, die WinAPI wird nur noch als Kompatibilitätslayer vorhanden sein. Was allerdings definitiv *falsch* ist:
Die MFC ist vom Stil auch sehr schlecht und wird auch nur noch stiefmütterlich von Microsoft gepflegt.
Da hab ich von Artchi mal eins auf die Mütze bekommen. Die MFC wird genauso weiterentwickelt wie .NET
MfG SideWinder
-
Und was ist den der "Nachfolger" der WinAPI? .Net? Ist .Net nicht mit WinAPI entwickelt worden? Ich blicke da nicht mehr ganz durch..
-
jackson schrieb:
Und was ist den der "Nachfolger" der WinAPI? .Net? Ist .Net nicht mit WinAPI entwickelt worden? Ich blicke da nicht mehr ganz durch..
Korrekt. .NET ist eine Kapselung der WinAPI (zumindest unter Windows, bei z.B. Mono sieht dass natürlich anders aus). Deshalb ist es auch völlig schwachsinnig eine neue WinAPI zu entwickelt, welche .NET kapseln soll.
-
Ich möchte mal versuchen das ganze von unten aufzurollen weil die Aussagen der anderen Posts ja durchaus so richtig sind nur imo etwas durcheinander.
Die Sprache C++ an sich enthält keine Möglichkeit/Klassen eine GUI zu schreiben.
Unter Windows gibt es nun eine Reihe von Funktionen, die WinAPI, welche das für das Betriebssystem Windows ermöglicht. Ich gehe jetzt mal bewusst nicht auf Linux ein weil da verhält sich das noch etwas anders. Allerdings ist der Gebrauch von WinAPI meistens nicht sehr komfortabel, weshalb viele Hersteller ihre eigenen API's gebaut haben um den Zugriff eleganter zu gestalten und haben dort auch noch reichlich andere Funktionalität dazugepackt (z.B. XML-, Datenbankanbindungsklassen usw.). Was die einzelnen API's angeht (z.B. MFC, VCL, Qt, .NET Framework, wxWidgets, GTK uvm.) kann man sich jetzt gerne darüber streiten welche denn die beste, schönste usw. ist. Da hat jeder individuelle Vorlieben.mein Fazit: Es ist sicher nicht von Nachteil die WinAPI zu kennen. Allerdings würde ich sie nicht benutzen um mittlere/größere Projekte damit zu verwirklichen. Dafür würde ich dann schon eine der anderen API's bevorzugen die dann intern sowieso die WinAPI benutzen. Da Microsoft allerdings sehr auf die .NET Schiene geht würde ich es mal in Frage stellen ob es zum jetzigen Zeitpunkt noch sinn macht mit MFC (was ja bekanntlcih aus dem gleichen Haus kommt) anzufangen. Mir ist zumindest nicht bekannt das die MFC noch weiterentwickelt wird.
-
Nur weil einigen hier nicht bekannt ist, ob die MFC weiter supported wird, heißt das noch lange nicht, das MS es nicht weiter supported. Wenn, dann möchte ich doch von euch hören "Ich weiß von MS das die MFC nicht weiter supported wird". Aber tut das hier einer? Anscheinend nicht.
Hier ein paar Zitate aus dem MSDN-Artikel "MFC: Visual Studio 2005 and Beyond", falls ihr zu fauel seid ihn zu lesen
... Microsoft is committed to ensuring MFC remains a competitive and viable application framework and MFC developers are equipped to take advantage of new platform technologies.
... MFC continues to be the C++ application framework of choice for many developers because the breath and depth of support that MFC provides for the Microsoft platforms remains unmatched by other frameworks.
... Looking beyond Visual Studio 2005, C++ developers should expect deepened integration between MFC and the .NET framework. After the release of Windows Longhorn, Microsoft intends to add MFC support for key Longhorn APIs and features. Microsoft also intends to support the Avalon user interface framework in MFC, providing MFC developers with a bridge to the future of platform user interface design. In essence, as the platform evolves, developers can look forward to seeing MFC updated to leverage the latest managed and native APIs and frameworks.
... MFC developers have access to more frameworks than any other type of developer on the platform.
Und nein, ich will niemanden zur MFC überreden, die kann und soll jeder freiwillig benutzen. Aber ich finde es nicht i.O. falsche Informationen rauszugeben, wenn jemand eine Antwort auf MFC haben will. Denn immerhin sind wir hier (hoffentlich) ein Forum, das zumindest offizielle Firmenmeldungen wiedergeben kann. Man kann die MFC schlecht designed finden, OK. Aber Fakt ist, MS wird die MFC weiter supporten!
-
Wie ich sehe ist das ganze eine Glaubensfrage
Nagut, jetzt habe ich einen Überblick bekommen. Vielen Dank für die guten erklärungen!
-
Reyx schrieb:
jackson schrieb:
Und was ist den der "Nachfolger" der WinAPI? .Net? Ist .Net nicht mit WinAPI entwickelt worden? Ich blicke da nicht mehr ganz durch..
Korrekt. .NET ist eine Kapselung der WinAPI (zumindest unter Windows, bei z.B. Mono sieht dass natürlich anders aus). Deshalb ist es auch völlig schwachsinnig eine neue WinAPI zu entwickelt, welche .NET kapseln soll.
Dein Denkfehler ist das .Net bei zukünftigen Windows Versionen nicht mehr die WinApi kapselt und dann ist das nicht mehr schwachsinnig.
-
Du kannst dir hier sowohl WinAPI als auch MFC mit MSVC++6 ansehen:
http://www.henkessoft.de/C++/WinAPI/WinAPI Kapitel 1 bis 6/api1.htm
http://www.henkessoft.de/C++/WinAPI/WinAPI_GDI/WinAPI_7_GDI.htm
http://www.win-api.de/tutorials.php?SessID=c46b8e781752dbb1b13c7180206ad74d&SessID=c46b8e781752dbb1b13c7180206ad74d
http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel1.htm