Іноді я отримую помилку, яку дає Word, намагаючись закрити документ із відкритим іншим діалоговим вікном, але я ніколи не зміг зрозуміти, чому це відбувається.
Іноді я отримую помилку, яку дає Word, намагаючись закрити документ із відкритим іншим діалоговим вікном, але я ніколи не зміг зрозуміти, чому це відбувається.
Відповіді:
Оскільки більшість діалогових вікон вважаються " модальними ", це означає, що управління не переходить до основної програми або викликає контейнер, поки діалогове вікно не закриється. Це за дизайном, і програміст має можливість зробити вікно модальним або немодальним. Зазвичай вікно визначається як модальне, якщо основна програма не може або не повинна продовжуватись доти, доки відкрите діалогове вікно не буде вирішено - або шляхом вибору (Добре), або переривання (Скасувати).
Діалогове вікно може сказати щось на зразок:
Ви внесли зміни до свого документа, чи хочете їх зберегти? (Так ні)
Тут немає очевидної правильної відповіді. Можливо, ви випадково пошкодили ваш документ (наприклад, кішка перейшла через клавіатуру). У цьому випадку відповідь - «Ні», або ви могли витратити години на введення змін, і в цьому випадку відповідь - «Так».
Найбезпечніше для Word - це відмовитись від закриття, поки ви не відповісте на питання.
Оскільки програма створена таким чином, щоб уникнути дії, користувач може не захотіти.
Зазвичай діалогове вікно відображається тоді, коли програмі потрібен користувач, щоб провести певні дії. Закриття збереженого документа є прекрасним прикладом: діалогове вікно пропонує зберегти зміни, відмінити зміни або перервати закриття та повернутися до редагування. Програма навмисно відмовляється закривати, не відповідаючи на це запитання, оскільки закриття змусить НЕЧЕГО вжити заходів. Програма не може самостійно визначитися, наприклад. відмовтеся від нещодавнього редагування або, навпаки, замініть правильну версію за допомогою введення кота на клавіатурі
Навіть якщо ми розглядаємо діалогове вікно, яке не пов'язане із закриттям, воно зазвичай означає, що якийсь процес триває, він ще не завершений, і користувач повинен вирішити, яким шляхом піти. Це не може бути "просто перервано", тому що переривання - це також дія, яку може не мати на увазі користувач.
Це також спрощує дизайн програми, оскільки її творцям не потрібно створювати "безпечний вихід" для кожної функції.
Сьогодні більшість діалогів не є модальними в технічному розумінні (програма залишається відповідальною), але все ж простіше зробити їх модальними в більш широкому розумінні логічного потоку програми.
Я можу помилитися, але я підозрюю, що це відноситься до старої загальної поведінки діалогового контролю.
Деякі з тих, хто їх вбивав раптово, не повертаючись, мали неприємні побічні ефекти, іноді навіть поза програмою, яка вже помер, і не було способу ввічливо вирватися з них у всіх випадках, якщо вони робили щось на системному рівні, який вимагав від користувачів.
Щодо того, як це все ще так, люди звикли до цього, розробники програмували це припущення десятиліттями і, що ще важливіше, непрограмісти використовували ці діалоги у своїх сценаріях автоматизації офісу, і Microsoft - це нічого, якщо не суворе дотримання цілей зворотної сумісності .
За завісами програма (в нашому випадку це MS Word) створює вікно "обробник подій натискання кнопки X" під час створення вікна. Коли є діалогове вікно, Word це записує. Потім у обробнику кнопки X після натискання кнопки X перевіряється наявність записаних відкритих діалогових вікон. Якщо такі є, обробник припиняє роботу. Якщо таких немає, він припиняє програму, і ОС очищає пам'ять, яку займає програма. Ось як це працює.