SDK ? oder MFC ?



  • damo, Dir ist die Sache anscheinend überhaupt noch nicht klar.
    Das eine schließt das andere doch nicht aus.

    Ich nutze z.B. die MFC, aber es gibt Dinge, die dort nicht enthalten sind. Dann muss man schon mal auf SDK-Funktionen zurückgreifen.



  • Nein, die MFC ist ein *Wrapper* um ein Teil des SDK!


  • Mod

    Und auch ATL und WTL sind wiederum auch nur Wrapper für bestimme Funktionen der Windows API.

    In vielen Bereichen (COM/COM+) verwende ich nur die ATL, in anderen (GUI) die MFC, selten, dass ich keine Bibliothek verwende und pures Win32-API verwende.

    Warum auch. Die Wraper nehmen mir die Arbeit ab.



  • Hallo

    Vielleicht solltest du auch wirklich einen der ersten Tipps befolgen und dir mal .net anschauen. Meiner Meinung nach, ist das noch einmal ein Quantensprung von der MFC in Sachen Schnelligkeit (beim Programmieren), Bequemlichkeit und Übersichtlichkeit.

    chrische



  • @damo

    Ich bin mir noch gar nicht sicher, ob Du überhaupt weißt, wovon Du redest.
    SDK heißt "Software development system". Das ist weder eine Programmsprache noch ein Wrapper oder sowas, sondern ein Programmpaket mit Ressourcen-Editor, IDE und Compiler. Allein daß Du das verwechselst, zeigt, daß Du noch nicht wirklich klar bist.

    MFC heißt "Microsoft foundation classes" und ist ein Wrapper der WinAPI. Sie enthält aber nicht alle Funktionen der WinAPI, so daß man u. U. schnell an ihre Grenzen stößt.

    Die WinAPI verursacht zwar mehr Schreibarbeit, ich finde aber die Programmstruktur übersichtlicher und leichter verständlicher als die MFC. Wenn Du mal eine Fehlermeldung in der MFC bekommst, muß Du vielleicht erstmal herausfinden, in welcher Klasse die fragliche Funktion liegt.
    Übrigens: Wenn Du die WinAPI gut kannst und OOP beherrscht, kannst Du Dir evtl. deine eigenen Wrapper schreiben. Damit kannst Du dann evtl. den Overhead der WinMain einsparen und dich auf die WndProc konzentrieren.

    Net habe ich gar nicht probiert. Mir ist nur aufgefallen, daß das Net-Framework 200MB Speicherplatz verschlingt, darum hab ichs wieder runtergeschmissen. Warum muß bei WinzigWeich immer alles so riesig sein? Paßt so gar nicht zum Firmennamen... 😮



  • Hallo

    Elektronix schrieb:

    @damo

    Ich bin mir noch gar nicht sicher, ob Du überhaupt weißt, wovon Du redest.
    SDK heißt "Software development system". Das ist weder eine Programmsprache noch ein Wrapper oder sowas, sondern ein Programmpaket mit Ressourcen-Editor, IDE und Compiler. Allein daß Du das verwechselst, zeigt, daß Du noch nicht wirklich klar bist.

    Also hier solltest du ein paar Sätze auch noch einmal überdenken.

    Elektronix schrieb:

    Net habe ich gar nicht probiert. Mir ist nur aufgefallen, daß das Net-Framework 200MB Speicherplatz verschlingt, darum hab ichs wieder runtergeschmissen. Warum muß bei WinzigWeich immer alles so riesig sein? Paßt so gar nicht zum Firmennamen... 😮

    Es handelt sich halt um eine Bibliothek mit großem Umfang. Wenn man Spiele spielen will, braucht man auch DirectX unter Windows. Wo ist da das Problem? Das endet wahrscheinlich eh nur im Flamewar, aber ich gebe mal zu bedenken, dass 200mb im Heimanwenderbereich nun wirklich keine Hürde darstellen sollten. Bei Vista ist das Framework eh dabei. da musste auch nichts zusätzlich installieren.

    chrische



  • Ok: SDK heißt "Software development kit". 😃



  • hallo, vielen vielen Dank für alles!
    Tja, 2 Tage vorbei, ich hab schon einen Fortschritt gemacht! 😉

    @Elektronix

    Ich bin mir noch gar nicht sicher, ob Du überhaupt weißt, wovon Du redest.

    :p ich hab schon geschrieben, dass ich auch nicht. Weil ich wenige Kenntnisse von MFC & WinAPI habe, kann ich nicht richtige Beispiele sagen. nur mit C & C++ erklären, und hoffe es geht.

    z.B. wenn ich nicht "vector<class>" benutzen will, kann ich auch mit C die Codes schreiben, aber zu vielen zu tippen, und lohn es nicht. Deshalb hab ich gefragt, ob WinAPI & MFC ähnlich wie diese Situation sind.

    noch mal vielen Dank an alle!



  • Hallo

    Du solltest dir wirklich mal .net am besten im Zusammenhang mit Zusammenhang mit c#.

    chrische



  • @chrische5 danke schön!

    du meinst, C# zu lernen ist gute Idee? Ja, wegen deines Vorschlagen hab ich schon vorgestern geguckt. Aber C# ähnlich wie Java, viele namespace...... eigentlich ist mir nicht schwer, aber C++ war meine Freundin 😃

    viele Komandozeile-Programme geschrieben, deshalb möchte ich mit GDI/Fenster ein bisschen spielen, so hab ich WinAPI gefunden! ich werde irgendwann C# probieren.
    kann man sagen, was WinAPI tun kann, kann C# auch?



  • damo schrieb:

    kann man sagen, was WinAPI tun kann, kann C# auch?

    Hallo damo,
    WinAPI hat nichts mit Programmiersprache C# zu tun, siehe weiter unten.

    Ich persönlich würde Win32 API als Grundlagenwissen empfehlen.
    Denn wenn Du später Probleme mit MFC, .NET usw. hast, kannst Du sie mit dem nötigen Grundlagenwissen viel besser lösen. Die Frameworks (Wrapper) MFC, .NET bauen letztendlich alle auf Win32API auf!

    Als zweiten Schritt darauf aufbauend dann gleich das (moderne) .NET Framework lernen und das (meiner bescheidenen Meinung nach in die Jahre gekommene) MFC überspringen.
    Ich habe den Eindruck, daß das MFC von Microsoft nicht mehr so gefördert wird wie das .NET Framework. Deshalb meine Einschätzung zu diesem Thema.

    Nun zu Deiner Frage oben: Das Framework hat (normalerweise) nichts mit der verwendeten Programmiersprache zu tun, d.h. es spielt hier von der Funktionalität her keine Rolle, ob Du C, C++, C#, Visual Basic oder gar Assembler verwendest.

    Mit C# kannst Du normalerweise viel effektiver (also schneller) programmieren als mit C oder C++.
    C# ist quasi die Kombination der Vorteile von C/C++ (relativ maschinennah und mit mächtigen aber gefährlichen Pointer-Manipulationen) und Visual Basic (komfortable Handhabung, mächtige Funktionen).

    Es ist nur wichtig zu wissen: Win32API als auch MFC und .NET Framework sind letztendlich auch nur Funktionsaufrufe! (Wenn man von den Klassen-Definitionen mal absieht)

    Martin
    P.S.: Bitte betrachte meine Einschätzung eher als grobes Schema. Habe bewußt jedes Detail weggelassen, was hier sonst unnötig aufblähen würde.



  • @Mmacher 👍 👍 👍

    Ich persönlich würde Win32 API als Grundlagenwissen empfehlen.
    Denn wenn Du später Probleme mit MFC, .NET usw. hast, kannst Du sie mit dem nötigen Grundlagenwissen viel besser lösen.

    ja,jedenfalls! Ich hab hier gefragt nur wegen wenn ich mit WinAPI arbeite, muss ich zu viel zu tippen.

    daß das MFC von Microsoft nicht mehr so gefördert wird

    hab auch schon gehört. Aber womit kann man Window-Programme schreiben?



  • Hallo

    Wenn das Artchi liest...

    WinAPI zu lernen halte ich für nicht notwendig, wenn man Probleme bekommt, kann man immer noch fragen und muss deswegen nicht alle Details bis ins Letzte kennen. Ich würde gleich zu c# wechseln.

    namespaces gibt es auch in c++ und die sollten nun wirklich keine Hürde darstellen, wenn du GUIs entwerfen willst.

    chrische



  • damo schrieb:

    hab auch schon gehört. Aber womit kann man Window-Programme schreiben?

    In Deinem Fall vielleicht mit der Programmiersprache C++ (da Du sie ja schon kennst) und mit Win32 API-Funktionen.

    Und später umsatteln auf C# plus .NET Framework.

    Als Einstiegsliteratur habe ich "Windows-Programmierung" von Petzold genommen.
    Es gibt im Internet viele Tutorials zu WinAPI, z.B. www.winapi.net und http://www.relisoft.com/Win32/index.htm oder etwas fortgeschrittener http://www.catch22.net/tuts/.
    Und natürlich dieses Forum hier!

    Wichtig! Egal womit Du anfängst: Bring bitte Geduld und Hartnäckigkeit mit. Laß Dich nicht wegen jeder Fehlermeldung die Flinte ins Korn werfen. Dann klappt es auch mit dem "Selbststudium".

    Martin



  • damo schrieb:

    daß das MFC von Microsoft nicht mehr so gefördert wird

    hab auch schon gehört. Aber womit kann man Window-Programme schreiben?

    Das MFC nicht mehr explizit supportet wird ist inzwischen überholt. Microsoft hat wohl dem Kundendruck nachgegeben und wieder ein wenig in der MFC gemacht (gibt hier einige Neuerungen zwischen VC++ 2005 und VC++ 2008). Und das .Net derzeit noch auf der WinAPI aufsetzt stimmt zwar, aber auch hier gibt es bereits einige Gerüchte das sich Microsoft über lang von der WinAPI verabschieden will.

    Totgesagte leben aber wie schon häufig bemerkt recht lange.

    Grundsätzlich kann man aber auf viele Arten zu einem Windows-Programm kommen. Die Frage ist nur welchen Ansatz man verfolgt:

    Geht man zu Fuß, nimmt man ein klappriges Fahrrad oder den Sportwagen xD

    Alles hat seine Vor- und Nachteile, zu Fuß kann man die Umgebung richtig überschauen und die Details geniesen, braucht aber auch lange...

    Die WinAPI würde ich nur als letzte Möglichkeit verwenden. Nicht weil sie nicht mächtig wäre, sondern weil es einfach extrem mühselig ist (noch dazu ist die WinAPI in einen IMHO sehr miesen Programmierstil gehalten). Die MFC nimmt den Anwender schon mehr ab, hat aber auch schon einige Zeit auf dem Buckel und nutzt daher auch vieles was in C++ inzwischen möglich ist auch nicht. Zudem hat man auch hier sehr viele unschöne Relikte aus alter Zeit. Es gibt noch genügend andere Alternativen die in dem einen Punkt besser (z.B. moderne Architektur) sind, in den anderen aber noch einiges vermissen lassen. Ich persönlich bin inzwischen ein Fan von WPF unter C# (ab .Net 3.0 im .Net Framework enthalten), auch wenn WPF nicht unbedingt die Krone der Schöpfung darstellt - Der einzige Harken für mich ist, das WPF nicht für C++ gedacht ist (und auch C++/CLI unterstüzt WPF nicht so weit wie es wünschenswert wäre).

    cu André



  • danke schön an alle! 👍
    schon gehört, C# + WPF ist Tendenz, aber...



  • wie wäre es wenn du mal versuchst ein eigenes kleines Framework zu schreiben ? Viele WindowsRoutine zusammen zu fassen in Klassen usw ... ? mach doch mal die Class "Window" und versuche objekte selber zu schreiben ... dabei lernst du erstens viel mehr, 2tes wenn du geschafft hast musst du ziemlich wenig aufwandbetreiben (nur deine klassen einbinden) und los gehts.. und den rest zu vereinfachen kannst du auch threads timer usw .. in Klassen packen, dass alles habe habe ich nämlich gemacht und schreibe nur noch damit meine Programme... Ich hoffe mal die WinAPI wird erstmal nicht völlig abgesetzt... Da ich erst C++ und dann WinAPI lange gelernt hab, will ich mich auch irgendwo nicht komplett umorientieren.. Ich finde auch dass die WInAPI manchmal ätzend ist, aber wenn man alles zusammen fügt geht es ja...

    Gruß Chris


Anmelden zum Antworten