C++ Mfc begin_message_map()

ActiveO2

Ensign
Dabei seit
Feb. 2009
Beiträge
161
Hallo,

kann mir bitte jemand erklären wie man "BEGIN_MESSAGE_MAP()" benutzt und was es überhaupt bewirkt.
Wie ich es füllen kann, was das dann jeweils bewirkt,...
Bisher habe ich noch keine hilfreiche Beschreibung gefunden :(

Ich lese es immerwieder und es scheint mir recht nützlich zu sein, wenn man es denn versteht^^

BEGIN_MESSAGE_MAP(xxx, xxx)

ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_CLOSE()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_One, OnBnClickedButton_One)

END_MESSAGE_MAP()


Vielen Dank
 
Das ist die MFC Kapselung für die Messageloop (Windows C API).
Wie C API Geschichte funktioniert kannst du hier nachlesen:
http://msdn.microsoft.com/de-de/library/bb384843.aspx

In dem letzten dort genannten Beispiel findest du:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
.......
switch (message)
{
case WM_PAINT:
....
case WM_DESTROY:

u.s.w........................

In der MESSAGE_MAP werden die jeweils in der C API unter case WM_XXXXX: auf 'lokale' MFC/C++ Funktionen (ON_WM_XXXXX) gemappt.
(Siehe z.B. WM_PAINT).
 
nee blackman. das macro BEGIN_MESSAGE_MAP is was ganz anderes.. da wird methode mit ner datenstrunktur definiert, die beim suchen nach nem messagehandler durchgeparsed wird. unter MFC gibt ins nur eine einzige zentrale funktion WndProc, die sucht dann anhand vom window handle (hwnd) die zugehörige klasseninstanz und parsed dann deren messagemap (btw. die von ihren höheren klassen) bis sie ne übereinstimmung gefunden hat und ruft dann ggf. den handler auf.
kugg dir ma besten mal das macro selbst an. rechtsklick drauf -> go to declaration.
ist ein bisschen kompliziert, aber das kann man schon verstehen ;)
 
lass einfach die finger davon.... wenn du Visual studio benutzt werden deine MMs automatisch erstellt. wenn man da selbst was reinschreibt kann der VS schon meckern..... bla bla, konnte nicht initialisieren. begin_m_m ist soweit ich verstanden habe, handler aufruf.
 
Zurück
Top