Почему Microsoft Word не может закрыться, если открыто диалоговое окно?

Почему Microsoft Word не может закрыться, если открыто диалоговое окно?

Иногда я получаю ошибку, которую выдает Word при попытке закрыть документ, когда открыто другое диалоговое окно, но я так и не смог разобратьсяпочемуБывает.

решение1

Поскольку большинство диалоговых окон считаются "модальный" что означает, что управление не передается обратно в основную программу или вызывающий контейнер, пока сам диалог не будет закрыт. Это сделано намеренно, и программист имеет возможность сделать окно модальным или немодальным. Обычно окно определяется как модальное, если основная программа не может или не должна продолжать работу, пока открытый диалог не будет обработан либо выбором (Ok), либо прерыванием (Cancel).

решение2

В диалоговом окне может быть написано что-то вроде:

Вы внесли изменения в документ. Хотите сохранить их? (Да) (Нет)

Здесь нет очевидного правильного ответа. Возможно, вы случайно испортили документ (например, кот прошел по клавиатуре), в этом случае ответ «Нет», или вы потратили часы на внесение изменений, в этом случае ответ «Да».

Самое безопасное, что может сделать Word, — не закрывать окно, пока вы не ответите на вопрос.

решение3

Потому что программа разработана таким образом, чтобы избежать выполнения действий, которые пользователю могут быть нежелательны.

Обычно диалоговое окно отображается, когда программе требуется, чтобы пользователь руководил некоторыми действиями. Закрытие несохраненного документа является отличным примером: диалоговое окно предлагает сохранить изменения, отменить изменения или отменить закрытие и вернуться к редактированию. Программа намеренно отказывается закрываться, не отвечая на этот вопрос, потому что закрытие заставит выполнить НЕКОТОРЫЕ действия. Программа не может самостоятельно решить, например, отменить последние изменения или, наоборот, перезаписать правильную версию с помощью набора текста «кошкой на клавиатуре».

Даже если мы рассмотрим диалог, не связанный с закрытием, это обычно означает, что идет какой-то процесс, он еще не завершен, и пользователь должен решить, куда идти. Его нельзя "просто прервать", потому что прерывание - это тоже действие, которое пользователь мог не иметь в виду.

Это также упрощает разработку программы, поскольку ее создателям не приходится придумывать «безопасный выход» из каждой функции.

Сегодня большинство диалогов не являются модальными в техническом смысле (программа остается ответственной), но сделать их модальными в более широком смысле логического потока программы все равно проще.

решение4

За кулисами программа (в нашем случае это MS Word) создает «обработчик события нажатия кнопки X» при создании окна. Когда есть диалоговое окно, Word записывает это. Затем, в обработчике кнопки X, когда нажата кнопка X, он проверяет наличие записанных открытых диалоговых окон. Если они есть, обработчик прерывает операцию закрытия. Если их нет, он завершает программу, и ОС очищает память, занятую программой. Вот как это работает.

Связанный контент