WinAPI für MFC erforderlich?
-
Tach auch!
Als ich mit dem Programmieren von C++ begann, habe ich mich gleich in die MFC gestürzt, welches am anfang auch ein bisschen schwierig war und irgendwie immernoch schwierig ist, weshalb ich mich entschieden habe, den C++ (nicht den MFC) kurs von mut.de zu machen, um die Grundlagen von C++ zu lernen.
Ich habe festgestellt, das die MFC auch große ähnlichkeit mit WinAPI hat. Sollte ich, wenn ich den C++ Kurs abolviert habe, einen WinAPI und erst dann einen MFC kurs machen?Mein ziel ist es, ziemlich vertraut mit den meisten Grundlagen von C++ zu sein und dann recht Produktive MFC anwendungen zu entwickeln.
Danke im Voraus
-
Die MFC sind gekapseltes WinAPI
Nur ne darübergelegte Klassen-Bibliothek die die Entwicklung beschleunigen soll
-
Ich habs folgendermaßen gemacht:
C++ in 21 Tagen und VC++ in 21 Tagen (beide von mut) parallel gelesen. in VC++ in 21 Tagen bekommt man manchmal ja auch WinAPI-Funktionen vorgesetzt, wenns kein MFC-Äquivalent dafür gibt, so hab ich die ersten WinAPI-Befehle gelernt. Dann hab ich irgendwann später das Tut von www.winapi.de gemacht um ein wenig die grundlagen zu verstehen.
-
Ok, dann werde ich das wohl auch so machen, aber eine frage habe ich noch:
Könnte es schaden, wenn ich so einen WinAPI kurs mache, da man ja nicht C vor C++ lernen soll, da es dort unterschiede gibt?Danke im Voraus
-
Assembler -> C -> C++ -> C# -> WinAPI -> MFC
-
was issn C#???
-
Ich verstehe nicht, warum man nicht C vor C++ lernen soll. Je mehr man kann, desto besser verdichten sich die Dinge. Am Besten schaut man sich bei der Windows-Programmierung ein kleines Programm in Assembler an. Da sieht man dann wirklich, was an der Basis abläuft. Hier ein kleines Beispiel von MS:
; ######################################################################### .386 .model flat, stdcall option casemap :none ; case sensitive ; ######################################################################### include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib ; ######################################################################### .code start: jmp @F szDlgTitle db "Minimum MASM",0 szMsg db " --- Assembler Pure and Simple --- ",0 @@: push MB_OK push offset szDlgTitle push offset szMsg push 0 call MessageBox push 0 call ExitProcess end startSolche Dinge können nie schaden.

Da sieht man z.B. in welcher Reihenfolge die Aktualparameter per push-Befehl auf den Stack geschoben werden müssen (nämlich von hinten nach vorne), damit die nachfolgende WinAPI-Fkt. (hier MessageBox) richtig "poppen" kann. Return-Werte landen dann übrigens im Akkumulator EAX.Genau so wichtig ist es, die C-Funktion printf(...) und ihre Formate zu kennen, das kommt immer wieder in MFC-Programmen. Spätestens, wenn man in den Sourcecode der MFC schaut, braucht man Basis-Wissen.
[ Dieser Beitrag wurde am 08.06.2003 um 19:23 Uhr von Erhard Henkes editiert. ]
-
Da gibt es inzwischen sogar ein dickes Buch von Charles Petzold über C# (C sharp = cis = erhöhtes C). Schau mal in die Sektion C# des Forums.
Ich bringe deshalb nur drei Beispiele:
//Beispiel 1 : using System; using System.Drawing; using System.Windows.Forms; public class HalloWelt { public static void Main() { MessageBox.Show( "Hallo","Info",MessageBoxButtons.OK, MessageBoxIcon.Information); } } //Beispiel 2 : using System; using System.Drawing; using System.Windows.Forms; public class Fenster { public static void Main() { Form MeinFenster = new Form(); MeinFenster.Width = 300; MeinFenster.Height = 50; MeinFenster.Text = "Ich bin ein Fenster"; Application.Run(MeinFenster); } } //Beispiel 3 : using System.Runtime.InteropServices; class PInvokeTest { [DllImport("user32.dll")] static extern int MessageBoxA(int hWnd, string m, string c, int t); static void Main() { MessageBoxA(0, "WinAPI lebt noch!", "Gruß aus der user32.dll", 0); } }[ Dieser Beitrag wurde am 08.06.2003 um 19:34 Uhr von Erhard Henkes editiert. ]