Pourquoi Microsoft Word ne peut-il pas exactement se fermer s'il y a une boîte de dialogue ouverte?

28

J'obtiens parfois l'erreur que Word donne en essayant de fermer un document avec une autre boîte de dialogue ouverte, mais je n'ai jamais pu comprendre pourquoi cela se produit.

John
la source
6
Le problème général est que les éléments de la boîte de dialogue peuvent devenir valides, non valides ou même inapplicables en fonction de ce que vous faites dans la fenêtre principale, et il n'y a souvent aucun moyen clair de résoudre ce problème avec les modifications que l'utilisateur aurait pu apporter dans la boîte de dialogue dans le intérimaire. (Je suppose que ce n'est qu'une autre manifestation du principe plus général des "boucles de rétroaction peut causer des problèmes dans un système".)
Mehrdad
Ils peuvent le faire si vous lancez le Gestionnaire des tâches et lui dites d'arrêter le processus. =) Mais cela peut avoir des effets secondaires inattendus. (Il peut y avoir de rares cas où un fichier pourrait finir par être corrompu, mais je suis presque sûr qu'il serait extrêmement rare. Il doit être conçu de toute façon pour les plantages imprévus et les pannes de courant.)
jpmc26

Réponses:

61

Parce que la plupart des boîtes de dialogue sont considérées comme " modales ", ce qui signifie que le contrôle ne revient pas au programme principal ou au conteneur appelant jusqu'à ce que la boîte de dialogue elle-même soit fermée. C'est par conception et le programmeur a la possibilité de faire une fenêtre modale ou non modale. Habituellement, une fenêtre est définie comme modale si le programme principal ne peut pas ou ne doit pas continuer jusqu'à ce que la boîte de dialogue ouverte soit traitée soit par sélection (Ok) soit par abandon (Cancel).

Bill Hileman
la source
4
Mais si le dialogue était modal, comment le PO a-t-il demandé au programme de se fermer? Pourrait-il y avoir autre chose ici?
Courses de légèreté avec Monica
7
@LightnessRacesinOrbit Il existe de nombreuses façons de fermer un programme, qui ne nécessitent pas toutes des clics sur la fenêtre principale. Par exemple, vous pouvez cliquer avec le bouton droit sur une entrée de la barre des tâches et sélectionner «Fermer», ou tirer le Gestionnaire des tâches vers le haut avec Ctrl-Maj-Échap et tenter de fermer à partir de là. L'arrêt de Windows tentera également de fermer les applications avec élégance au départ, bien qu'il puisse ensuite les «tuer» après un délai d'expiration. Ceux-ci envoient un signal au programme pour qu'il se ferme sans qu'il ait réellement le focus, d'où la capture d'écran de Bob disant "Cliquez sur OK, passez à Word" dans cet ordre.
IMSoP
@IMSoP: Je suis conscient qu'il existe plus de moyens "d'ingénierie" pour demander la fermeture d'une application, mais j'avais mentalement tracé une ligne où je pense que "l'usage courant" se termine, car je m'attendais à ce que l'OP spécifie exactement ce que ils faisaient si c'était au-delà de "l'usage commun".
Courses de légèreté avec Monica
11
@LightnessRacesinOrbit Je vous accorde le Gestionnaire des tâches est une façon plus "experte", mais je ne serais pas du tout surpris si les gens pensaient que fermer quelque chose dans la barre des tâches était parfaitement normal. En fait, je me rends compte maintenant, vous n'avez même pas besoin de cliquer avec le bouton droit, il y a un bouton rouge [x] juste là si vous survolez un groupe ou regardez la petite vignette. Différentes choses semblent évidentes pour différentes personnes.
IMSoP
@IMSoP: C'est vrai.
Courses de légèreté avec Monica
20

La boîte de dialogue pourrait dire quelque chose comme:

Vous avez apporté des modifications à votre document, souhaitez-vous les enregistrer? (Oui Non)

Il n'y a pas de bonne réponse évidente ici. Vous avez peut-être accidentellement corrompu votre document (par exemple, le chat a marché sur le clavier), auquel cas la réponse est "Non", ou vous avez peut-être passé des heures à taper les modifications, auquel cas la réponse est "Oui".

La chose la plus sûre pour Word est de refuser de fermer jusqu'à ce que vous répondiez à la question.

Nick Gammon
la source
8
Je suis sûr que la question concerne spécifiquement cette erreur.
Bob
12
D'accord, mais la question ne mentionnait aucune boîte de dialogue particulière. Je suis programmeur, je comprends ce qu'est une boîte de dialogue modale, mais j'ai essayé de répondre à la question de savoir pourquoi cela se produit.
Nick Gammon
À mon humble avis, je dois garder à l'esprit que les personnes qui ne sont pas programmeurs utilisent des programmes.
LawrenceC
1

Parce que le programme est conçu de cette façon, pour éviter de prendre des mesures, l'utilisateur peut ne pas vouloir.

Habituellement, une boîte de dialogue s'affiche lorsque le programme a besoin que l'utilisateur guide une action. La fermeture d'un document non enregistré est un excellent exemple: une boîte de dialogue propose d'enregistrer les modifications, de les annuler ou d'interrompre la fermeture et de revenir à l'édition. Le programme refuse intentionnellement de fermer sans répondre à cette question car la fermeture forcera QUELQUES mesures à prendre. Le programme ne peut pas décider seul, par exemple. annuler la modification récente ou, au contraire, remplacer la version correcte par une saisie au clavier.

Même si nous considérons une boîte de dialogue qui n'est pas liée à la fermeture, cela signifie généralement qu'un processus est en cours, qu'il n'est pas encore terminé et que l'utilisateur doit décider de la direction à suivre. Il ne peut pas être "simplement abandonné", car l'abandon est également une action que l'utilisateur peut ne pas vouloir dire.

Il simplifie également la conception du programme, car ses créateurs n'ont pas à créer "une sortie sûre" de chaque fonction.

Aujourd'hui, la plupart des dialogues ne sont pas modaux au sens technique (le programme reste responsable), mais il est encore plus facile de les rendre modaux dans un sens plus large du flux logique du programme.

Agent_L
la source
0

Je peux me tromper, mais je soupçonne que cela remonte à l'ancien comportement de contrôle de dialogue commun.

Plusieurs de ceux qui ont été tués brusquement sans revenir ont eu des effets secondaires désagréables, parfois même en dehors du programme maintenant mort et il n'y avait aucun moyen de leur échapper poliment dans tous les cas s'ils faisaient quelque chose au niveau du système qui nécessitait la contribution de l'utilisateur.

Quant à savoir pourquoi il en est toujours ainsi, les gens s'y sont habitués, les développeurs ont programmé avec cette hypothèse pendant des décennies et, plus important encore, les non-programmeurs ont utilisé ces dialogues dans leurs scripts de bureautique et Microsoft n'est rien sinon un strict respect des objectifs de compatibilité descendante .

Facture
la source
0

Derrière les rideaux, le programme (dans notre cas, c'est MS Word) crée un "gestionnaire d'événements de clic sur le bouton X" lors de la création de la fenêtre. Lorsqu'il y a une fenêtre de dialogue, Word l'enregistre. Ensuite, dans le gestionnaire de bouton X, lorsque le bouton X a cliqué, il vérifie les fenêtres de dialogue ouvertes enregistrées. S'il y en a, le gestionnaire abandonne l'opération de fermeture. S'il n'y en a pas, il termine le programme et le système d'exploitation nettoie la mémoire occupée par le programme. Voilà comment cela fonctionne.

Vladislav Toncharov
la source