¿Por qué exactamente no se puede cerrar Microsoft Word si hay un cuadro de diálogo abierto?

28

De vez en cuando aparece el error que Word produce cuando intento cerrar un documento con otro cuadro de diálogo abierto, pero nunca he podido entender por qué sucede.

John
fuente
66
El problema general es que las cosas en el diálogo pueden volverse válidas, inválidas o incluso inaplicables dependiendo de lo que haga en la ventana principal, y a menudo no hay una manera clara de resolver esto con los cambios que el usuario podría haber hecho en el diálogo en el provisional. (Supongo que esta es solo otra manifestación del principio más general de "los bucles de retroalimentación pueden causar problemas en un sistema".)
Mehrdad
Pueden hacerlo si inicia el Administrador de tareas y le dice que elimine el proceso. =) Pero esto puede tener efectos secundarios inesperados. ( Puede haber algunas instancias raras en las que un archivo podría terminar dañado, pero estoy bastante seguro de que serían extremadamente raras. De todos modos, tiene que estar diseñado para fallas imprevistas y cortes de energía).
jpmc26

Respuestas:

61

Debido a que la mayoría de los cuadros de diálogo se consideran " modales ", lo que significa que el control no vuelve al programa principal o al contenedor de llamadas, hasta que se cierra el cuadro de diálogo. Esto es por diseño y el programador tiene la opción de hacer una ventana modal o no modal. Por lo general, una ventana se define como modal si el programa principal no puede o no debe continuar hasta que se aborde el diálogo abierto mediante la selección (Ok) o la cancelación (Cancelar).

Bill Hileman
fuente
44
Pero si el diálogo fuera modal, ¿cómo instruyó el OP que el programa se cerrara? ¿Podría estar pasando algo más aquí?
Lightness compite con Monica el
77
@LightnessRacesinOrbit Hay muchas formas de cerrar un programa, no todas requieren clics en la ventana principal. Por ejemplo, puede hacer clic con el botón derecho en una entrada de la barra de tareas y seleccionar "Cerrar", o abrir el Administrador de tareas con Ctrl-Shift-Esc e intentar cerrar desde allí. Al cerrar Windows también se intentará cerrar las aplicaciones con gracia inicialmente, aunque luego puede "matarlas" después de un tiempo de espera. Estos envían una señal al programa para que se cierre sin que realmente tenga foco, por lo tanto, la captura de pantalla de Bob dice "Haga clic en Aceptar, cambie a Word" en ese orden.
IMSoP
@IMSoP: Soy consciente de que hay más formas de "ingeniería" para pedir que se cierre una aplicación, pero mentalmente dibujé una línea donde creo que termina el "uso común", porque esperaba que el OP especificara exactamente qué estaban haciendo si fuera más allá del "uso común".
Lightness compite con Monica el
11
@LightnessRacesinOrbit Le concedo que el Administrador de tareas es una forma más "experta", pero no me sorprendería en absoluto si la gente pensara que cerrar algo de la barra de tareas es perfectamente normal. De hecho, ahora me doy cuenta de que ni siquiera necesita hacer clic derecho, hay un botón rojo [x] allí si pasa el mouse sobre un grupo o ve la pequeña miniatura. Diferentes cosas parecen obvias para diferentes personas.
IMSoP
@IMSoP: Eso es cierto.
Lightness compite con Monica el
20

El cuadro de diálogo podría estar diciendo algo como:

Ha realizado cambios en su documento, ¿desea guardarlos? (Si no)

No hay una respuesta correcta obvia aquí. Es posible que haya dañado accidentalmente su documento (por ejemplo, el gato caminó sobre el teclado) en cuyo caso la respuesta es "No", o podría haber pasado horas escribiendo cambios, en cuyo caso la respuesta es "Sí".

Lo más seguro para Word es negarse a cerrar hasta que responda la pregunta.

Nick Gammon
fuente
8
Estoy bastante seguro de que la pregunta es sobre este error específicamente.
Bob
12
OK, pero la pregunta no menciona ningún cuadro de diálogo en particular. Soy programador, entiendo qué es un cuadro de diálogo modal, sin embargo, traté de responder la pregunta de por qué sucede.
Nick Gammon
En mi humilde opinión, tenga en cuenta que las personas que no son programadores usan programas.
LawrenceC
1

Debido a que el programa está diseñado de esta manera, para evitar tomar medidas, el usuario podría no querer.

Por lo general, se muestra un cuadro de diálogo cuando el programa necesita que el usuario guíe alguna acción. Cerrar un documento no guardado es un excelente ejemplo: un cuadro de diálogo ofrece guardar los cambios, descartarlos o cancelar el cierre y volver a editar. El programa se niega intencionalmente a cerrar sin responder esta pregunta porque el cierre obligará a ALGUNA acción a tomarse. El programa no puede decidir por sí solo, por ejemplo. descarte la edición reciente o, por el contrario, sobrescriba la versión correcta con la escritura en el teclado.

Incluso si consideramos un diálogo que no está relacionado con el cierre, generalmente significa que hay un proceso en curso, que aún no se ha completado y que el usuario debe decidir qué camino tomar. No puede ser "simplemente abortado", porque abortar también es una acción que el usuario podría no haber querido decir.

También simplifica el diseño del programa, ya que sus creadores no tienen que crear "una salida segura" de cada función.

Hoy, la mayoría de los diálogos no son modales en el sentido técnico (el programa sigue siendo responsable), pero aún es más fácil hacerlos modales en un sentido más amplio del flujo lógico del programa.

Agent_L
fuente
0

Podría estar equivocado, pero sospecho que esto se remonta al antiguo comportamiento común de control de diálogo.

Varios de los que fueron asesinados abruptamente sin regresar tuvieron efectos secundarios desagradables, a veces incluso fuera del programa ahora muerto y no había forma de escapar cortésmente de ellos en todos los casos si estaban haciendo algo a nivel de sistema que requería la entrada del usuario.

En cuanto a por qué sigue siendo así, la gente se acostumbró, los desarrolladores programaron con esa suposición durante décadas y, lo que es más importante, los no programadores usaron esos diálogos en sus scripts de automatización de oficina y Microsoft no es más que un estricto adherente a los objetivos de compatibilidad hacia atrás .

Cuenta
fuente
0

Detrás de las cortinas, el programa (en nuestro caso es MS Word) crea un "controlador de eventos de clic de botón X" al crear la ventana. Cuando hay una ventana de diálogo, Word lo registra. Luego, en el controlador del botón X, cuando el botón X hace clic, comprueba las ventanas de diálogo abiertas grabadas. Si hay algunos, el controlador cancela la operación de cierre. Si no lo hay, finaliza el programa y el sistema operativo limpia la memoria tomada por el programa. Así es como funciona.

Vladislav Toncharov
fuente