Wie schliesse ich einen Dialog wenn ich auf den Abbrechen Button druecke?



  • Guten Morgen, 🙂

    hier mal 'ne einfache Frage:
    Wie schliesse ich einen Dialog wenn ich einen FolgeDialog oeffne?

    Ich moechte nachdem ich einen neuen Dialog geoffnet habe dort auf Abbrechen druecken und dann an den Anfang meiner Dialogfolge (also zum Startdialog) zurueckkehren...nicht zu dem Dialog welcher nur einen Schritt zurueckliegt.

    Nun koennte ich ja einfach mit DoModal den Startdialog aufrufen, aber dann waeren ja immer noch die alten Dialoge im Hintergrund geoeffnet.
    Also eigentlich will ich, glaube ich, einfach nur meinen Dialog welchen ich gerade verlasse kontrolliert schliessen bevor (oder waerend) ich den neuen aufrufe.

    Oder liege ich einfach total falsch?! 😕

    morgendliche Gruesse
    Guenni



  • Du könntest das zumachen der Dialoge ja am Rückgabewert festmachen.

    Beispiel:
    Bei IDCANCEL werden alle bis auf den ersten geschlossen und geben IDCANCEL weiter.
    Bei IDOK passiert nix im aufrufenden Dialog (Zurück-Knopf), vielleicht gibt es ja auch IDBACK oder so.

    🙂



  • sorry.....vergessen zu antworten(voll stress)

    ich moechte eigentlich nur die dialoge welche ich verlasse um in einen anderen zu wechseln schliessen
    meines wissens nach bleiben die alten naemlich dennoch bestehen und werden lediglich ueberlagert

    🙂



  • Hmm, vielleicht haben wir beide uns unklar ausgedrückt.

    In deinem letzten Betrag konnte ich das Problem nicht erkennen. Versuch doch mal den gewünschten Ablauf genau zu beschreiben. Oder zeig, was du hast und sag was daran falsch ist.

    🙂



  • also nochmal 🙂

    ich schreibe ein kleines programm fuer meinen pocketpc welches dialogbasiert kundendaten, etc. aufnimmt
    das programm besteht aus einer eingabemaske welche sich ueber mehrere dialoge erstreckt
    wenn ich nun auf den folgenden dialog wechsel indem ich auf die ok taste druecke so soll mein startdialog(damit ist der gemeint in dem ich ok druecke) terminiert werden
    ....sprich: weg sein

    leider sieht es momentan bei mir so aus, dass ich froehlich durch die dialoge hopse aber leider keiner davon bei verlassen geschlossen wird

    die dialoge bleiben im hintergrund und dadurch immer noch "offen" und fressen ressourcen.......und das passt mir gar nicht!!! 🙂

    UND NUN MEINE EIGENTLICHE FRAGE (nur fat zum kenntlich machen)
    wie kriege ich es hin, dass ich zu einem folgedialog wechsel und gleichzeitig den aufrufenden dialog zerstoere?

    danke fuer hilfe



  • CDialog::OnOK();
    dlg.DoModal();
    ???



  • ich würde im OnInitDialog des neuen Dialogs ne abfrage machen.

    CDialog_alt formularBeenden;              //objekt erstellen
    if(formularBeenden.DoModal() == IDCANCEL) //wenn geschlossen
    {}
    


  • vielleicht das hier:

    DestroyWindow
    The DestroyWindow function destroys the specified window. The function sends WM_DESTROY and WM_NCDESTROY messages to the window to deactivate it and remove the keyboard focus from it. The function also destroys the window's menu, flushes the thread message queue, destroys timers, removes clipboard ownership, and breaks the clipboard viewer chain (if the window is at the top of the viewer chain).

    If the specified window is a parent or owner window, DestroyWindow automatically destroys the associated child or owned windows when it destroys the parent or owner window. The function first destroys child or owned windows, and then it destroys the parent or owner window.

    DestroyWindow also destroys modeless dialog boxes created by the CreateDialog function.

    BOOL DestroyWindow(
    HWND hWnd // handle to window to destroy
    );

    Parameters
    hWnd
    Handle to the window to be destroyed.
    Return Values
    If the function succeeds, the return value is nonzero.

    If the function fails, the return value is zero. To get extended error information, callGetLastError



  • Guten Morgen

    leider funktioniert es nicht ueber DoModal....IDCancel...und auch nicht ueber DestroyDialog (was mich am meisten verwunderte).

    die bloeden dialoge werden nicht geschlossen sondern lediglich ueberdeckt

    guenni



  • 😃 hab die loesung

    estardu hatte fast recht!!!

    an CDialog::OnOk(); ist nur eine kleinigkeit falsch...und genau diesen fehler haben wir auch gemacht

    es darf nicht CDialog heissen sondern CMeinDialog::OnOk();

    danke fuer die hilfe!! 👍

    guenni


Anmelden zum Antworten