Beenden einer Dialogfeldanwendung bei XP Fehlermeldung



  • Hi,

    ich habe eine Andwendung geschrieben in VC++ 6.0 unter win98
    und diese funktioniert unter Win 9x,NT, ME und 2000 einwandfrei.
    Wenn ich aber das Programm in XP beende dann wird mir durch den debugger
    von XP angezeigt das ein Fehler (Assertion Failed oder so ähnlich)
    in der wincore.cpp entstanden ist. Wie kann ich das beheben oder umgehen.

    vielen dank für eure hilfe
    weisnichtweiter



  • Vielleicht hat ja der Ein oder Andere auch das Prob deshalb poste ich hier
    die Lösung zu meinem Problem.

    Der Fehler war einfach das die Anwendung nicht mehr aus dem Dialog raus ist.
    Nachdem ich nicht OnCancel oder EndDialog genommen habe sondern stattdessen
    nur exit nahm geht die Sache perfekt.

    bis denn
    weisnichtweiter



  • weisnichtweiter schrieb:

    Der Fehler war einfach das die Anwendung nicht mehr aus dem Dialog raus ist.
    Nachdem ich nicht OnCancel oder EndDialog genommen habe sondern stattdessen
    nur exit nahm geht die Sache perfekt.

    Der Fehler war einfach das das Auto nicht mehr stehengeblieben ist.
    Nachdem ich nicht im Parkhaus oder auf dem Bürgersteig geparkt habe sondern stattdessen
    nur das Auto in einem See versenkte geht die Sache perfekt.



  • @MFK

    🙂 nicht schlecht.....

    aber spass beiseite.
    wieso trat eigentlich dieses prob auf ?
    gibt es eine andere lösung ?

    danke für die antwort
    weisnichtweiter



  • weisnichtweiter schrieb:

    wieso trat eigentlich dieses prob auf ?

    Das lässt sich so nicht sagen. Du hast nur die Symptome kuriert, nicht die Ursache, noch dazu auf die brutalstmögliche(tm) Weise. 😉

    gibt es eine andere lösung ?

    Mit Sicherheit. Aber dazu muss man die Ursache finden. Zunächst wäre die Zeilennummer der Assertion und der Callstack (Aufrufliste) zum Zeitpunkt, wenn die Assertion fehlschlägt, interessant.



  • Hi,

    Danke für Deine Hilfe.

    Assertion failure ist bei mir in der Wincore.cpp in Zeile 3475.
    In dieser Zeile steht ASSERT( ContinueModal() ) ; und es hat bei mir
    (denke ich) die Probleme verursacht.

    Ich kann mir nur vorstellen, daß irgendwo der Dialog zwar beendet werden
    sollte, aber die RunModalLoop nicht 0 zurückgegeben hat und deswegen
    das Prog trotzdem weiter ausgeführt wurde und deshalb der Fehler aufgetreten
    ist, da ja die Loop nicht beendet war, da ungleich 0 zurück gegeben wurde.

    Also muss ich die RunModalLoop aufrufen den Rückgabewert speichern in nResult
    und mit 0 vergleichen. Wenn das der Fall ist sollte auch der Dialog beendet
    werden.

    Als ich mit EndDialog(0) ; 0 übergeben habe ist doch aber eigentlich 0
    übergeben worden, es funktionierte aber trotzdem nicht. Wieso ?
    Selbes Spiel bei OnCancel(); .
    Da wird ja meines Wissens nur 0 übergeben, oder nicht ?

    Oder bin ich irgendwie auf ´nem Dampfer wie der Titanic ?? 😕 🙂

    weisnichtweiter


Anmelden zum Antworten