Programm springt ohne Aufruf in Funktion!!
-
Hallo zusammen,
ich habe folgendes Problem: Ich habe die Funktion
[cpp] void myForm_OnCreate(MParam mParam) { cmdTest.insert(mParam.hWnd, (mParam.hInstance)); [b]//Break 1[/b] } [/cpp]
und die zugehörigen Methodendefinition:
[cpp] int MButton::insert(HWND parent, HINSTANCE hInstance) { int a = 42; // (nur ein dummy) [b]Break 2[/b] if (hWnd != NULL) { // Workaround für das Problem return -1; } hWnd = CreateWindow( "button", "Beenden", WS_CHILD | WS_VISIBLE, 0, 0, 100, 100,parent, NULL, hInstance, NULL); if (hWnd > 0) { list.add(this, (HANDLE)hWnd); hParent = parent; return 0; } return -1; } [/cpp]
Wenn ich das Programm im Debugger Step-By-Step ausführe komme ich erst zu Break 1, dann zu Break 2 (was ja auch so sein sollte) und dann nochmal zu Break 2!
Und nein, es wird nicht woanders nochmal aufgerufen. Break 1 ist die einzige Möglichkeit. Wenn ich nach dem ersten Aufruf Schritt für schritt weiter gehe verhält es sich erst normal und dann lande ich irgendwann in Assemblercode (VC-Debugger) und nach ein paar Zeilen komme ich bei Break 2 raus.Versteht das jemand?
Viele Grüße,
Matthias
-
Schau dir mal den Call-Stack an, ob du eventuell eine Rekursion eingebaut hast.
(btw, woher bekommt die Funktion eigentlich die Variable hWnd?)
-
hWnd ist eine Membervariable.
Keine Rekursion, nichts.
Ich kann den Fehler auch durch Reduktion nicht eingrenzen.