Andreas: Mal wieder Perl/Tk

Ich hab eine Anwendung, die vor dem Schließen bestimmte Aktionen ausführen soll oder ein Rollback vollführen muss. Dazu habe ich zwei Buttons (Apply, Cancel), welche nach Ausführung das Fenster schließen. Funzt alles prima. Nun habe ich aber folgendes Problem: Es gibt dummerweise immernoch den OS-seitigen Schließen-Button in der Fensterleiste. Dieser darf aber nicht einfach so gedrückt werden, weil es sonst Probleme geben kann. Meine Frage nun:

Kann ich den irgendwie deaktivieren?
Kann ich den irgendwie an eine Aktion binden? Wenn ja, welches Event wäre das? Hab es mit $mainWindow->bind('<Destroy>'=>&funcCancel) versucht, was aber nicht wirklich funktioniert hat.

Danke für die Hilfe!

  1. Moin, moin, mal wieder!

    So kannst Du den Close-Button, den Menu-Eintrag "Schließen" und die Tastenkombination <Alt><F4> umleiten:
    $mainWindow -> protocol('WM_DELETE_WINDOW', sub { ende() });

    Und wenn die Funktion ende() kann ja bei Bedarf einfach nichts tun.

    Alles klar?

    Norbert

    1. Ach ja: Wenn Du nach Deinen Aktionen das Fenster dann doch schließen willst, mußt Du mit $mainWindow -> destroy() das ursprüngliche Verhalten nachbilden.

      Norbert

      PS: In der vorherigen Antwort war ein "wenn" zu viel. Schneide es doch aus und bewahre es für schlechte Zeiten auf!