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.
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.
Respostas:
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).
fonte
A caixa de diálogo pode estar dizendo algo como:
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.
fonte
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.
fonte
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 .
fonte
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.
fonte