Warum kann Microsoft Word nicht geschlossen werden, wenn ein Dialogfeld geöffnet ist?

28

Ich erhalte gelegentlich die Fehlermeldung, die Word beim Schließen eines Dokuments mit einem anderen geöffneten Dialogfeld ausgibt, konnte jedoch nie herausfinden, warum dies der Fall ist.

John
quelle
6
Das allgemeine Problem besteht darin, dass die Informationen im Dialogfeld möglicherweise gültig, ungültig oder gar nicht mehr zutreffend sind, je nachdem, was Sie im Hauptfenster tun. Oft gibt es keine eindeutige Möglichkeit, dies durch Änderungen zu beheben, die der Benutzer im Dialogfeld vorgenommen hat Interim. (Ich denke, dies ist nur eine weitere Manifestation des allgemeineren Prinzips "Rückkopplungsschleifen können Probleme in einem System verursachen".)
Mehrdad
Sie können, wenn Sie den Task-Manager starten und ihn anweisen, den Vorgang abzubrechen. =) Dies kann jedoch unerwartete Nebenwirkungen haben. (Es mag einige seltene Fälle geben, in denen eine Datei beschädigt werden könnte, aber ich bin mir ziemlich sicher, dass sie äußerst selten ist. Sie muss ohnehin für unerwartete Abstürze und Stromausfälle ausgelegt sein.)
jpmc26

Antworten:

61

Da die meisten Dialogfelder als " modal " betrachtet werden, wird die Steuerung erst dann an das Hauptprogramm oder den aufrufenden Container zurückgegeben, wenn der Dialog selbst geschlossen wird. Dies ist beabsichtigt und der Programmierer hat die Möglichkeit, ein Fenster modal oder nicht modal zu machen. Normalerweise wird ein Fenster als modal definiert, wenn das Hauptprogramm nicht weiterarbeiten kann oder soll, bis der geöffnete Dialog entweder durch Auswahl (Ok) oder Abbrechen (Abbrechen) bearbeitet wird.

Bill Hileman
quelle
4
Aber wenn der Dialog modal wäre, wie hat das OP das Programm angewiesen, zu schließen? Könnte hier noch etwas los sein?
Leichtigkeit Rennen mit Monica
7
@LightnessRacesinOrbit Es gibt viele Möglichkeiten, ein Programm zu schließen, wobei nicht alle das Klicken auf das Hauptfenster erfordern. Sie können beispielsweise mit der rechten Maustaste auf einen Taskleisteneintrag klicken und "Schließen" auswählen oder den Task-Manager mit Strg-Umschalt-Esc öffnen und versuchen, ihn von dort aus zu schließen. Das Herunterfahren von Windows versucht auch, Anwendungen zunächst ordnungsgemäß zu schließen, kann sie jedoch nach einer Zeitüberschreitung "beenden". Diese senden ein Signal an das Programm, um es zu schließen, ohne dass es tatsächlich den Fokus hat, daher sagt Bobs Screenshot "Klicken Sie auf OK, wechseln Sie zu Word" in dieser Reihenfolge.
IMSoP
@IMSoP: Ich bin mir bewusst, dass es mehr "technische" Möglichkeiten gibt, eine Anwendung zum Schließen aufzufordern, aber ich habe mental eine Linie gezogen, an der meiner Meinung nach die "allgemeine Verwendung" endet, weil ich erwartet hätte, dass das OP genau angibt, was Sie taten es, wenn es jenseits der "üblichen Verwendung" lag.
Leichtigkeit Rennen mit Monica
11
@LightnessRacesinOrbit Ich gebe Ihnen zu, dass der Task-Manager ein "fachkundiger" Weg ist, aber ich wäre überhaupt nicht überrascht, wenn die Leute dachten, etwas aus der Taskleiste zu schließen, wäre völlig normal. Tatsächlich ist mir jetzt klar, dass Sie nicht einmal mit der rechten Maustaste klicken müssen. Genau dort befindet sich ein rotes [x], wenn Sie den Mauszeiger über eine Gruppe halten oder das kleine Miniaturbild anzeigen. Unterschiedliche Dinge scheinen für unterschiedliche Menschen offensichtlich zu sein.
IMSoP
@IMSoP: Das stimmt.
Leichtigkeit Rennen mit Monica
20

Das Dialogfeld könnte etwa so lauten:

Sie haben Änderungen an Ihrem Dokument vorgenommen. Möchten Sie diese speichern? (Ja Nein)

Hier gibt es keine offensichtliche richtige Antwort. Möglicherweise haben Sie Ihr Dokument versehentlich beschädigt (z. B. die Katze ist über die Tastatur gegangen). In diesem Fall lautet die Antwort "Nein". In diesem Fall haben Sie möglicherweise stundenlang Änderungen eingegeben. In diesem Fall lautet die Antwort "Ja".

Das Sicherste, was Word tun kann, ist, das Schließen zu verweigern, bis Sie die Frage beantwortet haben.

Nick Gammon
quelle
8
Ich bin mir ziemlich sicher, dass es sich bei der Frage speziell um diesen Fehler handelt.
Bob
12
OK, aber in der Frage wurde kein bestimmtes Dialogfeld erwähnt. Ich bin Programmierer, verstehe, was ein modales Dialogfeld ist, habe jedoch versucht, die Frage zu beantworten, warum es passiert.
Nick Gammon
Ich muss bedenken, dass Leute, die keine Programmierer sind, Programme verwenden.
LawrenceC
1

Da das Programm auf diese Weise entworfen wurde, möchte der Benutzer möglicherweise keine Maßnahmen ergreifen.

In der Regel wird ein Dialogfeld angezeigt, in dem der Benutzer eine Aktion ausführen muss. Das Schließen eines nicht gespeicherten Dokuments ist ein hervorragendes Beispiel: In einem Dialogfeld können Sie die Änderungen speichern, verwerfen oder das Schließen abbrechen und zur Bearbeitung zurückkehren. Das Programm weigert sich absichtlich, das Programm zu schließen, ohne diese Frage zu beantworten, da durch das Schließen einige Maßnahmen erzwungen werden. Das Programm kann nicht selbst entscheiden, z. Verwerfen Sie die zuletzt vorgenommene Bearbeitung oder überschreiben Sie im Gegenteil die richtige Version mit der Tastaturtastatur.

Selbst wenn wir einen Dialog betrachten, der nicht mit dem Schließen zusammenhängt, bedeutet dies normalerweise, dass ein Prozess im Gange ist, der noch nicht abgeschlossen wurde und der Benutzer entscheiden muss, welchen Weg er einschlagen soll. Es kann nicht "einfach abgebrochen" werden, da das Abbrechen auch eine Aktion ist, die der Benutzer möglicherweise nicht gemeint hat.

Dies vereinfacht auch das Design des Programms, da die Entwickler nicht für jede Funktion einen "sicheren Ausweg" schaffen müssen.

Heutzutage sind die meisten Dialoge im technischen Sinne nicht modal (das Programm bleibt verantwortlich), aber es ist immer noch einfacher, sie im weiteren Sinne des logischen Flusses des Programms modal zu gestalten.

Agent_L
quelle
0

Ich könnte mich irren, aber ich vermute, dass dies auf das alte allgemeine Dialogsteuerungsverhalten zurückgeht.

Einige von denen, die abrupt getötet wurden, ohne dass sie zurückkehrten, hatten unangenehme Nebenwirkungen, manchmal sogar außerhalb des jetzt toten Programms, und es gab nicht in jedem Fall eine Möglichkeit, sich höflich von ihnen zu lösen, wenn sie etwas auf Systemebene taten, das Benutzereingaben erforderte.

Was den Grund betrifft, warum dies immer noch so ist, haben sich die Leute daran gewöhnt, die Entwickler haben jahrzehntelang mit dieser Annahme programmiert und, was noch wichtiger ist, Nicht-Programmierer haben diese Dialoge in ihren Skripten für die Büroautomatisierung verwendet .

Rechnung
quelle
0

Hinter den Kulissen erstellt das Programm (in unserem Fall MS Word) beim Erstellen des Fensters einen "X-Button-Click-Event-Handler". Wenn ein Dialogfeld angezeigt wird, zeichnet Word dies auf. Wenn Sie dann im X-Button-Handler auf den X-Button klicken, wird nach aufgezeichneten geöffneten Dialogfenstern gesucht. Wenn es welche gibt, bricht der Handler den Schließvorgang ab. Ist dies nicht der Fall, wird das Programm beendet und das Betriebssystem räumt den vom Programm belegten Speicher auf. So funktioniert es.

Vladislav Toncharov
quelle