reale Hilfe
-
Hi Leute,
ich hab folgendes Prob:
Habe noch nicht allzuviel mit C++ gemacht. Klar die Grundlagen hab ich drin.
Leider hat mein Dozent die Ansicht vertreten MFC und WinAPI brauch er nicht auszubilden. Das kann jeder! Nun mach ich ein Praktikum und soll ein Programm schreiben. Natürlich in MFC.
Ich verliere aber so langsam den Überblick.Wer aus den Bereich Rheine (PLZ 48432) würde mir die grundlegenden Sachen zeigen. Ich begreife schnell und es soll auch nur eine Einführung sein.
z.B. was steht in welcher Datei? Wo trage ich wie was ein?
Was ich mir da genau vorstelle, sag ich euch (Dir) dann am Telefon.Ach ja, ist wirklich dringend.
Gruß
Trikor
-
Hi

Kannst auch mal hier schauen.
WinAPI wird unter www.win-api.de sehr gut erklärt.
Also ich fange auch z.Zt. mit MFC an und muss sagen, dass es am Anfang sehr verwirrend wirkt, aber man mehr und mehr dahinter kommt. Allerdings muss ich dir leider sagen, dass das alles einiges an Zeit verschlingt, auch wenn man schnell begreift (Ich glaube das tu ich auch :)). Hab mich auch erst wieder mit nem professionellen Programmierer unterhalten, der auch sehr betont hat, dass man wirklich klein anfangen und sich nicht zu viel vornehmen sollte, sonst wird man förmlich von Informationen überrollt.
-
Die Zeit ist allerdings eines meiner größten Probleme. Die hab ich nämlich nicht. Das Problem ist auch nicht umbedingt die Programmiersprache C++, sondern der Umgang mit MFC in Visual Studio 6. Was ich brauche ist eine kurze Einführung wie das Grundgerüst eines Programmes ist, bzw. wann ich in welcher cpp schreibe.
-
Also... Das können dir hier sicher 99% besser erklären als ich, aber egal ich werde es mal probieren
.Wichtig zu wissen ist für den Anfang, dass die von der WinAPI her bekannte Funktion WinMain quasi in den MFC (Microsoft Foundation Classes) "verpackt" ist. Die MFC ist letztendlich nur die objektorientierte Auslegung der WinAPI. Ich würde dir empfehlen, mit SDI (Single Document) zu beginnen. Das Ganze wird mit dem MFC-Anwendungsassistenten erstellt. Dann wählst du einzeln aus, was du für dein Projekt benötigst.
Bevor ich nun aber anfange, zu versuchen die dann vom sog. AppWizard erstellten/generierten Klassen zu erklären, sage ich lieber noch was Allgemeines zur Windowsprogrammierung: Windows arbeitet ereignisorientiert, das heißt, dass die Programme nicht nach Informationen bezüglich Systemänderungen oder Benutzerereignissen fragen, sondern sie bekommen diese Informationen bei Bedarf frei Haus geliefert. Etwas technischer Beschrieben, ruft Windows eine Funktion des Programms auf, wenn eines dieser Ereignisse eingetreten ist. Diese Funktion ist vom Programm definiert und bestimmt so den Ablauf des Programms. Selbige OnXXX-Funktionen, die du dann überall siehst, beschreiben nur, was geschieht, wenn vom Programm eine bestimmte Nachricht (WM_XXXXX) gesendet wird. Beispielsweise sendet das Programm beim Starten die Nachricht WM_CREATE und bei irgendwelchen Veränderungen des Fenster die Nachricht WM_DRAW. Das wird dann unter MFC zu OnCreate() bzw. OnDraw(...).
Nun zu den einzelnen Klassen, die du vor dir hast, wenn du ein SDI-Projekt erstellt hast:
PName = Projektname
- CAboutDlg: Diese Klasse betrifft den Dialog, welcher sich öffnet, wenn du im Programm auf Hilfe bzw. aufs Fragezeichen klickst. Das Aussehen dieses Dialoges mithilfe der Ressourcen festgelegt.
- CMainFrame: "Kümmert" sich um das Hauptfenster deiner Anwendung an sich, ToolBar etc.
- CPNameApp: Das Grundgerüst, verwaltet auch das Menü der Anwendung
- CPNameView: "Kümmert" sich um den standardmäßig weißen Bereich, wichtig um sämtlichen Text auszugeben. Textausgabe managt man in der Regel hier in der OnDraw-Funktion über den Zeiger pDC.
- CPNameDoc: Betrifft Funktionen zum Speichern/Laden/etc... von Dokumenten, die dann z.B. im View-Bereich angezeigt werden.
Das Aussehen von Dialogen/Menüs/Toolbars/etc... wird über Ressourcen "verwaltet", die in dein Projekt integriert sind (übernimmt die IDE). Du handelst dann die Werte von (z.B.) Eingabefeldern/etc... über Membervariablen dieser Dialogklassen, wo es dann für jeden Dialog eine gibt (wie z.B. CAboutDlg).
Leider schwer das Ganze so zusammenzufassen, auch gut möglich dass ich bisschen Humbuk erzählt habe, also korrigiert mich bitte, bin auch nur Anfänger.

Ich hoffe aber, dass es dir wenigstens ein bisschen was Sinnvolles erzählen konnte. Aber unter Zeitdruck darfst du dich auf keinen Fall setzen lassen, das erschwert das Ganze ungemein...
Viel Glück!
-
Trikor schrieb:
Die Zeit ist allerdings eines meiner größten Probleme. Die hab ich nämlich nicht. Das Problem ist auch nicht umbedingt die Programmiersprache C++, sondern der Umgang mit MFC in Visual Studio 6. Was ich brauche ist eine kurze Einführung wie das Grundgerüst eines Programmes ist, bzw. wann ich in welcher cpp schreibe.
Das Problem ist dazu braucht man Zeit! MFC lernt sowas nicht von heute auf morgen. Und wirklich verstehen kann man das auch nur wenn man die Grundlagen der WinAPI schon halbwegs drin hat. Wenn du dich dann in der WinAPI auskennst weisst du relativ schnell wo du bei MFC wie was was hinschreiben musst und wie man nicht vorhandene Funktionen ergänzt oder überbrückt. Wenn du dann noch die ganzen Klassen die es bei MFC gibt halbwegs intus hast kannste dann auch mal n vollständiges Programm schreiben.
Wenn du dich nur in C++ (wie du selbst sagst) nur ein wenig auskennst und nicht grad die fundiertesten Kenntnisse hast und dazu noch nie ein einziges Programm für Windows geschrieben hast und nichtmal die grundlegende Struktur eines Windows-Programmes und des Betriebssystems kennst muss ich sagen: Du hast du leider noch einen verdammt langen weg vor dir.
Wenn du das wirklich ernsthaft lernen willst beschaff dir am besten 2 Bücher:
1. Windows Programmierung (von Charles Petzold -> Microsoft Press)
2. Inside Visual C++ (von David Kruglinski -> Microsoft Press)setz dich hin und fang an zu lesen. Dann hast du gute Chancen dir das nötige Grundwissen in 2-3 Wochen anzulernen...
gruß
-
also ich muß sagen, deine Erklärungen der Programmstruktur haben mich wirklich weitergebracht. Danke dafür. Wäre meiner Meinung nach einen Eintrag in die FAQ wert.

Auch der Link zu C++ in 21 Tagen hat sich wirklich gelohnt. Das ist wirklich ausführlich und leicht verständlich.Vielen, vielen Dank
