MFC Strukturierung
-
Hallo alle,
ich bin mit der MFC Programmierung (allgemein mit C++) nicht so vertraut und habe daher folgende Fragen:
1. Wo genau startet eigentlich mein Programm (Ich blicke den ganzen CODE nicht den
mir MFC automatisch schreibt-bzw. habe ich auch nicht die Zeit alles zu verstehen)?2. Ich würde gerne ein "cpp-Main-File" einbinden, dass nach "Fensterinitialisierung" gestartet wird und meinen Hauptprogrammablauf (State-Machine in Schleife) beeinhaltet. In diesem Programm will ich Lese/Schreib-Zugriff aud die Membervariablen der "Dialogklasse" haben und MessageBoxen ausgeben können!!!
Ist das ganze mit MFC überhaupt möglich(so wie ich mir das vorstelle)?
Über Tipps und Anregungen würde ich mich sehr freuen!!
-
weisim schrieb:
1. Wo genau startet eigentlich mein Programm (Ich blicke den ganzen CODE nicht den mir MFC automatisch schreibt-bzw. habe ich auch nicht die Zeit alles zu verstehen)?
In der MFC gibt es ein "_tWinMain"
weisim schrieb:
2. Ich würde gerne ein "cpp-Main-File" einbinden, dass nach "Fensterinitialisierung" gestartet wird
Dann mach das doch in "InitInstance" Deiner Applöikation rein.
weisim schrieb:
und meinen Hauptprogrammablauf (State-Machine in Schleife) beeinhaltet. In diesem Programm will ich Lese/Schreib-Zugriff aud die Membervariablen der "Dialogklasse" haben und MessageBoxen ausgeben können!!!
Du kannst natürlich keine Schleife irgendwie wo einbauen... sonst würden die Fenster ja blockiert werden...
So ein Problem wird i.d.R. wie folgt gelöst:
- Du musst einen eigenen Thread erzeugen, wenn Du eine eigene Schleife benötigst
(siehe: http://msdn.microsoft.com/library/DEU/vccore/html/_core_Multithreading.3a_.Creating_Worker_Threads.asp bzw. http://msdn.microsoft.com/library/en-us/vclib/html/_MFC_AfxBeginThread.asp)
- Mit der eigenlichen Fenster-Applikation solltest Du über Windows-Messages kommunizieren (siehe: WM_USER http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/messagesandmessagequeuesreference/messagesandmessagequeuesmessages/wm_user.asp)- Du könntest natürlich auch direkt auf irgendwelche Member der Klasse Zugreifen, Du musst dann aber sicherstellen, dass keine Zugriffsprobleme von mehrere Threads auftreten! I.d.R. musst DU also den Zugriff via Critical Section absichern
- Auf Windows-Controls darfst Du i.d.R. nicht von einem anderen Thread zugreifen, da die meisten Funktionen nur gehen, wenn sie vom gleichen Thread aufgerufen werden, der auch das Fenster erzeugt hat.
-
Danke erstmal für die schnelle Antwort,
1. ich finde das _tWinMain nicht - wo soll dies im SourceCode sein?
2. Danke für den Tipp mit den Threads - ich glaube das ist mir aber zu kompliziert!
Ich bin nämlich nur Amateur-Programmierer und brauche das C++-Programm nur im
Rahmen einer Projektarbeit (in der die Zeit eh schon total knapp ist). Ich muss dann mal schaun ob ich das ganze Programm auch ohne die Schleife realisieren kann. Danke!!!
-
weisim schrieb:
1. ich finde das _tWinMain nicht - wo soll dies im SourceCode sein?
Das ist im Source der MFC... also unter
C:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\src\mfc\appmodule.cpp
-
vielleicht hilft dir dies hier:
http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel5.htm
-
Meint er nicht eher wo sein MFC-Programm anfängt, also ob
z.B. OnInitDialog o.ä.???