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.


Log in to reply