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

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

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

Responder1

Porque a maioria das caixas de diálogo são consideradas "modal" o que significa que o controle não retorna ao programa principal, ou ao contêiner de chamada, 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. Normalmente, uma janela é definido para ser modal se o programa principal não pode ou não deve continuar até que o diálogo aberto seja tratado através da seleção (Ok) ou do cancelamento (Cancelar).

Responder2

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

Você fez alterações em seu documento, deseja salvá-las? (Sim não)

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

A coisa mais segura que o Word pode fazer é recusar-se a fechar até que você responda à pergunta.

Responder3

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

Normalmente, uma caixa de diálogo é exibida quando o programa precisa que o usuário oriente 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 abortar o fechamento e retornar à edição. O programa se recusa intencionalmente a fechar sem responder a esta pergunta porque o fechamento forçará ALGUMA ação a ser tomada. O programa não pode decidir por si só, por exemplo. descarte a edição recente ou, pelo contrário, substitua a versão correta digitando gato no teclado.

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

Também simplifica o design do programa, já que seus criadores não precisam criar “uma saída segura” para cada função.

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

Responder4

Nos bastidores, 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. Então, no manipulador do botão X, quando o botão X é clicado, ele verifica se há janelas de diálogo abertas gravadas. Se houver, o manipulador aborta a operação de fechamento. Caso contrário, ele encerra o programa e o sistema operacional limpa a memória ocupada pelo programa. É assim que funciona.

informação relacionada