Por que exatamente o Microsoft Word não pode fechar se houver uma caixa de diálogo aberta?


28

Ocasionalmente, recebo o erro que o Word apresenta ao tentar fechar um documento com outra caixa de diálogo aberta, mas nunca consegui descobrir por que isso acontece.


6
O problema geral é que as coisas na caixa de diálogo podem se tornar válidas, inválidas ou até inaplicáveis, dependendo do que você faz na janela principal, e muitas vezes não há uma maneira clara de resolver isso com as alterações que o usuário possa ter feito na caixa de diálogo no interino. (Acho que isso é apenas uma outra manifestação do princípio mais geral de "loops de feedback pode causar problemas em um sistema".)
Mehrdad

Eles podem se você iniciar o Gerenciador de Tarefas e pedir para interromper o processo. =) Mas isso pode ter efeitos colaterais inesperados. (Não pode haver alguns casos raros em que um arquivo pode acabar danificado, mas eu tenho certeza que eles seria extremamente raro Tem que ser projetado para acidentes inesperados e quedas de energia de qualquer maneira..)
jpmc26

Respostas:


61

Como a maioria das caixas de diálogo é considerada " modal ", o que significa que o controle não volta para o programa principal ou chama o contêiner, até que a própria caixa de diálogo seja fechada. Isso ocorre por design e o programador tem a opção de tornar uma janela modal ou não modal. Geralmente, uma janela é definida como modal se o programa principal não puder ou não deve continuar até que a caixa de diálogo aberta seja tratada através da seleção (Ok) ou do cancelamento (Cancelar).


4
Mas se o diálogo era modal, como o OP instruiu o programa a fechar? Alguma outra coisa está acontecendo aqui?
Lightness Races com Monica no dia

7
@LightnessRacesinOrbit Existem muitas maneiras de fechar um programa, e nem todas requerem cliques na janela principal. Por exemplo, você pode clicar com o botão direito do mouse em uma entrada da barra de tarefas e selecionar "Fechar" ou abrir o Gerenciador de Tarefas com Ctrl-Shift-Esc e tentar fechar a partir daí. Desligar o Windows também tentará fechar aplicativos normalmente normalmente, embora possa "matá-los" após um tempo limite. Eles enviam um sinal para o programa fechar sem que ele realmente tenha o foco, daí a captura de tela de Bob dizendo "Clique em OK, alterne para o Word" nessa ordem.
IMSoP

@IMSoP: Estou ciente de que existem mais maneiras de "engenharia" para solicitar o fechamento de um aplicativo, mas eu desenhei mentalmente uma linha em que acho que o "uso comum" termina, porque eu esperava que o OP especificasse exatamente o que eles estavam fazendo se fosse além do "uso comum".
Lightness Races com Monica

11
@LightnessRacesinOrbit Concordo que o Gerenciador de Tarefas é uma maneira mais "especializada", mas não ficaria surpreso se as pessoas pensassem que fechar algo da barra de tarefas era perfeitamente normal. De fato, agora percebo que você nem precisa clicar com o botão direito do mouse, há um botão [x] vermelho ali mesmo, se você passar o mouse sobre um grupo ou exibir a pequena miniatura. Coisas diferentes parecem óbvias para pessoas diferentes.
#

@IMSoP: That is true.
Lightness Races with Monica

20

A caixa de diálogo pode estar dizendo algo como:

Você fez alterações no seu documento. Deseja salvá-las? (Sim não)

Não há resposta correta óbvia aqui. Você pode ter corrompido acidentalmente o documento (por exemplo, o gato passou pelo teclado). Nesse caso, a resposta é "Não" ou você pode ter passado horas digitando alterações, nesse caso a resposta é "Sim".

A coisa mais segura para o Word fazer é recusar-se a fechar até você responder à pergunta.


8
Tenho certeza de que a pergunta é sobre esse erro especificamente.
Bob

12
OK, mas a pergunta não mencionou nenhuma caixa de diálogo específica. Sou programador, entendo o que é uma caixa de diálogo modal, mas tentei responder à pergunta de por que isso acontece.
Nick Gammon

O IMHO deve ter em mente que pessoas que não são programadores usam programas.
LawrenceC

1

Como o programa foi projetado dessa maneira, para evitar ações que o usuário pode não querer.

Geralmente, uma caixa de diálogo é exibida quando o programa precisa que o usuário guie alguma ação. Fechar um documento não salvo é um excelente exemplo: uma caixa de diálogo oferece para salvar as alterações, descartar as alterações ou interromper o fechamento e retornar à edição. O programa intencionalmente se recusa a fechar sem responder a essa pergunta, pois o fechamento forçará ALGUMA ação a ser tomada. O programa não pode decidir por si próprio, por exemplo. descarte a edição recente ou, pelo contrário, substitua a versão correta com a digitação "gato no teclado".

Mesmo se considerarmos uma caixa de diálogo que não está relacionada ao fechamento, geralmente significa que algum processo está em andamento, ainda não foi concluído, e o usuário deve decidir qual caminho seguir. Não pode ser "simplesmente abortado", porque abortar também é uma ação que o usuário pode não ter a intenção.

Ele também simplifica o design do programa, pois seus criadores não precisam criar "uma saída segura" de todas as funções.

Hoje, a maioria dos diálogos não é modal no sentido técnico (o programa permanece responsável), mas ainda é mais fácil torná-los modais em um sentido mais amplo do fluxo lógico do programa.


0

Eu posso estar enganado, mas suspeito que isso remonta ao antigo comportamento comum de controle de diálogo.

Vários daqueles que foram mortos abruptamente sem retornar tiveram efeitos colaterais desagradáveis, às vezes até fora do programa agora morto e não havia como escapar deles educadamente em todos os casos, se eles estivessem fazendo algo no nível do sistema que exigisse a entrada do usuário.

Quanto ao motivo pelo qual ainda é assim, as pessoas se acostumaram a isso, os desenvolvedores programaram com essa premissa por décadas e, mais importante, os não programadores usaram essas caixas de diálogo em seus scripts de automação de escritório e a Microsoft não é nada menos que aderente estritamente às metas de compatibilidade com versões anteriores .


0

Por trás das cortinas, o programa (no nosso caso, o MS Word) cria um "manipulador de eventos de clique no botão X" ao criar a janela. Quando há uma janela de diálogo, o Word registra isso. Em seguida, no manipulador do botão X, quando o botão X clicou, ele verifica as janelas de diálogo abertas gravadas. Se houver, o manipulador interrompe a operação de fechamento. Se não houver, ele encerra o programa e o sistema operacional limpa a memória consumida pelo programa. É assim que funciona.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.