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

27

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.

    
por John 08.03.2018 / 18:33

5 respostas

60

Como a maioria das caixas de diálogo é considerada " modal ", o que significa que o controle não passa de volta para o programa principal ou chamando container, até que o diálogo seja fechado. Isso ocorre por design e o programador tem a opção de tornar uma janela modal ou não modal. Normalmente, uma janela é definida para ser modal se o programa principal não puder ou não continuar até que o diálogo aberto seja tratado através de seleção (Ok) ou abortar (Cancelar).

    
por 08.03.2018 / 18:39
20

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

You have made changes to your document, do you want to save them? (Yes) (No)

Não há uma resposta correta óbvia aqui. Você pode ter acidentalmente corrompido seu documento (por exemplo, o gato caminhou sobre o 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 é se recusar a fechar até que você responda a pergunta.

    
por 09.03.2018 / 06:27
1

Como o programa é projetado dessa forma, evite tomar medidas que o usuário possa não querer.

Normalmente, 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 salvar as alterações, descartar as alterações ou abortar o fechamento e retornar à edição. O programa se recusa a encerrar intencionalmente sem responder a essa pergunta porque o fechamento forçará ALGUMAS ações a serem tomadas. O programa não pode decidir por conta própria, por exemplo. descartar edição recente ou, ao contrário, sobrescrever a versão correta com digitação de gato no teclado.

Mesmo se considerarmos um diálogo que não está relacionado ao fechamento, geralmente significa que algum processo está em andamento, ele ainda não foi concluído e o usuário deve decidir o caminho a seguir. Não pode ser "simplesmente abortada", porque abortar também é uma ação que o usuário não quis dizer.

Ele também simplifica o design do programa, já que os 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 continua responsável), mas ainda é mais fácil torná-los modais em um sentido mais amplo do fluxo lógico do programa.

    
por 10.03.2018 / 15:15
0

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

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

Por que ainda assim, as pessoas se acostumaram a isso, desenvolvedores programados com essa premissa por décadas e, mais importante, não-programadores usaram esses diálogos em seus scripts de automação de escritório e a Microsoft não é nada além de um estrito adepto ao metas de compatibilidade com versões anteriores.

    
por 09.03.2018 / 19:21
0

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

    
por 11.03.2018 / 14:00