SDK ? oder MFC ?



  • hallo,
    hab WinAPI schon 2 Monate gelernt, trotzdem finde, dass es viele Codes zu tippen gibt. so möchte ich MFC umsteigen. Früher hab ich von C zum C++ gelernt, fand es viele Vorteile von C++, zumindestens viele einfache STL zu benutzen.

    und die Frage : Die "Beziehung" von C und C++ ist ähnlich wie die "Beziehung" von WinAPI und MFC? zumindestens kann ich mit MFC-Umgebung die SDK Codes schreiben, wenn ich will, oder?

    oder jd hat dne richtigen Vorschlag? danke vorher!!



  • aja .. und nach weiteren 2 monaten fällt dir dann auf das .net vielleicht noch besser ist als MFC

    SDK Code? Software Development Kit Code willst du schreiben?

    Also, bevor du änfängst im 2 monatstakt die programmiersprache zu wechseln solltest du dich etwas länger mit der einen oder anderen beschäftigen. MFC ist zwar einfacher als Winapi aber mit ihr ist nicht alles einfach wenns um detailierte Winapi sachen geht die einem eigentlich die MFC abnimmt.

    und ja du kannst unter der MFC auch Winapi Funktionen aufrufen. die MFC ist ja nur ein wrapper der Winapi



  • danke schön!

    ich weiss nicht genau, welches Gefühl ich von WinAPI-programmieren hab. Früher habe ich nur "int, double, printf,if, while, break" die einige Schlüsselwörter gelernt, dann kann ich "programmieren"!!!.
    Aber jetzt.. (schon mit C/C++ 3 Jahre beschäftigt) mit WinAPI-programmieren... wenn ich ein kleines Programm schreiben möchte, find ich Wauh..... zu zu viel zu tun!!! fast jedes Schlüsselwort brauche ich mustercodes copy zu machen...(sonst die Funktion Parameter im MSDN zu lesen...) weiss jd was ich meine...

    so eigentlich will ich nicht was "wechseln", sondern... einige Hilfe...



  • Mit der MFC geht vieles einfacher, weil man sich hier um viele Windows-Grundlagen nicht mehr kümmern muss. Das macht es einen schon leichter, sich auf das wesentliche zu konzentrieren.


  • Mod

    damo schrieb:

    ich weiss nicht genau, welches Gefühl ich von WinAPI-programmieren hab. Früher habe ich nur "int, double, printf,if, while, break" die einige Schlüsselwörter gelernt, dann kann ich "programmieren"!!!.

    Ja Du kannst einen Algorithmus schreiben. Und...

    Wenn es um die Ein-/Ausgabe geht bist Du immer auf Libraries angewiesen.
    Und die WinApi ist eben eine etwas komplexere Library.

    Das bringt eben mit sich, dass man die UI-API auch lernen muss.
    Und das ist eben mehr oder weniger komplex je nachdem was Du machen möchtest.

    damo schrieb:

    Aber jetzt.. (schon mit C/C++ 3 Jahre beschäftigt) mit WinAPI-programmieren... wenn ich ein kleines Programm schreiben möchte, find ich Wauh..... zu zu viel zu tun!!! fast jedes Schlüsselwort brauche ich mustercodes copy zu machen...(sonst die Funktion Parameter im MSDN zu lesen...) weiss jd was ich meine...

    so eigentlich will ich nicht was "wechseln", sondern... einige Hilfe...

    Wenn Du Hilfe willst, dann lies zuerst ein Buch, damit Dir klar wird wie die entsprechenden Libraries funktionieren. Du kannst ja auch ATL/WTL oder sonst was nehmen.
    Alles basiert aber auf der WinAPI, und alle diese Bibliotheken/Libs vereinfachen bestimmte Dinge!

    Wenn Du Dich entschieden hast was Du willst, wirst Du immer noch lernen müssen.
    Eben die Library und das ist eben keine Sprache...

    Was Du letzten Endes nehmen willst hängt davon ab, was Du machen möchtest.
    Nicht jedes Werkzeig eignet sich für jede Aufgabe. Einen Nagel mit einem Uhrmacherschraubenzieher einzuschlagen ist sehr mühsam. Und eine Uhr mit dem Vorschlaghammer zu reparieren auch.



  • @sri 👍

    Das macht es einen schon leichter, sich auf das wesentliche zu konzentrieren.

    das habe ich gemeint!

    @Martin Richter,danke schön!

    Das bringt eben mit sich, dass man die UI-API auch lernen muss.

    das ist warum ich Win-api lernen möchte!!!

    Nicht jedes Werkzeig eignet sich für jede Aufgabe.

    Richtig! 👍 Vielleicht kannst du mir bitte sagen, wofür eignet sich SDK-programming und wofür MFC? danke sehr.



  • 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


Log in to reply