Funktion von BEGIN/END_MESSAGE_MAP ?
-
Hallo,
ich les mir grad hier den vom MFC-Anwendungsassistenten generierten Code durch und bin auf das Macro BEGIN_MESSAGE_MAP, bzw. END_MESSAGE_MAP gestoßen.
Hab auch schon in der MSDN nachgesehen (dort wird auch erklärt, wie man es benutzt), jedoch wofür es gut sein soll... _ hab ich leider nix gefunden.Würd mich freuen, wenn mir das jemand erklären könnte.
Und...ich hoffe es stört euch nicht...ich würde gerne noch etwas wissen
und zwar hab ich in der .h -Hearderdatei, in der eine Dialogklasse für meine dialogbasierte Anwendung von CDialog abgeleitet wird, im Abschnitt "public:" in der Klassendeklaration folgenden Ausdruck gefunden:class CMFCExampleDlg : public CDialog { ... public: enum { IDD = IDD_MFCEXAMPLE_DIALOG }; ... };
Ich mein ich kenne ja enum, also so isse's nicht *grins* - jedoch steht es hier ohne Typname ? Das ist mir neu.
Ich bin ein absoluter Newbie in Visual C++ und ich würde gerne alles bis ins kleinste Detail verstehenAlso wäre echt supersuper-nett wenn ihr mir da weiterhelfen könntet.
'n Gruß dalass
Christoph aka. Xzibit
-
Wenn Du alles bis aufs kleinste verstehen willst, dann kommst Du nicht drum herum den Source-Code der MFC dir anzuschauen (wird ja schlissslich mitgeliefert!).
Bzgl. der Message-Map: Es gibt ja auch noch ein "DECLARE_MESSAGE_MAP" in der h-Datei. Das gehört da auch dazu... alle drei sind einfach Makros... das declare definiert variablen in der Klasse und eine Methode (schau Dir einfach den Source an!
Das Begin-Message-Map implementiert die Funktion und definiert den Inhalt der Variable. Zwischen dem Begin und End stehen ja dann die Einträge der Message map, welche in die Variable als Einträge aufgenommen werden. Das End-Message-Map schliesst die Variablen-Definition ab.Aber wie gesagt: Schau Dir bitte den Source an...
Das enum mit der "IDD" definiert einfach ein "Symbol" IDD, welches dem Default-Konstruktor CDialog übergeben wird und somit die Resource-ID Deines Dialoges ist.
-
Was genau meinst du mit dem Source ?
Ich nehme mal an die MFC-Headerdateien, wie <afxwin.h>, oder ?
Den Sourcecode selbst der MFC werd ich mir warscheinlich nicht ansehen können, der is ja in Libraries abgepackt......
-
Natürlich kannst Du Dir den Source anschauen... Du kannst sogar eigene DLLs kompilieren, wenn Du viel Lust hast!
Bei VC7.1 lieht er unterC:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\src
Falls er da nicht ist, hast Du nur teile von VS installiert und musst das Setup nochmals ausführen und den Source installieren...