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.
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.
Réponses:
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).
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.
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.
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 .
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.