Dlaczego dokładnie nie można zamknąć programu Microsoft Word, jeśli otwarte jest okno dialogowe?

28

Czasami pojawia się błąd, który występuje w programie Word podczas próby zamknięcia dokumentu przy otwartym oknie dialogowym, ale nigdy nie byłem w stanie zrozumieć, dlaczego tak się dzieje.

Jan
źródło
6
Ogólny problem polega na tym, że elementy w oknie dialogowym mogą stać się ważne, nieprawidłowe, a nawet nie mieć zastosowania, w zależności od czynności wykonywanych w oknie głównym, i często nie ma jasnego sposobu rozwiązania tego problemu za pomocą zmian wprowadzonych przez użytkownika w oknie dialogowym tymczasowy. (Myślę, że to tylko kolejny przejaw bardziej ogólnej zasady „pętle sprzężenia zwrotnego mogą powodować problemy w systemie”.)
Mehrdad
Mogą to zrobić, jeśli uruchomisz Menedżera zadań i powiesz mu, aby zabił proces. =) Ale może to mieć nieoczekiwane skutki uboczne. ( Mogą występować rzadkie przypadki, w których plik może zostać uszkodzony, ale jestem prawie pewien, że byłyby one niezwykle rzadkie. Musi to być zaprojektowane na nieoczekiwane awarie i przerwy w dostawie prądu.)
jpmc26

Odpowiedzi:

61

Ponieważ większość okien dialogowych jest uważana za „ modalne ”, co oznacza, że ​​sterowanie nie wraca do programu głównego lub do wywoływania kontenera, dopóki samo okno dialogowe nie zostanie zamknięte. Jest to zgodne z projektem, a programista ma opcję wykonania okna modalnego lub niemodalnego. Zazwyczaj okno jest zdefiniowane jako modalne, jeśli główny program nie może lub nie powinien kontynuować, dopóki otwarte okno dialogowe nie zostanie obsłużone przez wybór (OK) lub przerwanie (Anuluj).

Bill Hileman
źródło
4
Ale jeśli dialog byłby modalny, w jaki sposób PO nakazał programowi zamknięcie? Może coś się tu dzieje?
Lekkość ściga się z Moniką
7
@LightnessRacesinOrbit Istnieje wiele sposobów zamykania programu, z których nie wszystkie wymagają kliknięcia w oknie głównym. Na przykład możesz kliknąć prawym przyciskiem myszy pozycję paska zadań i wybrać „Zamknij” lub pociągnąć Menedżera zadań do góry za pomocą Ctrl-Shift-Esc i spróbować zamknąć. Zamykanie systemu Windows będzie również próbowało początkowo z wdziękiem zamykać aplikacje, chociaż może później „zabić” je po upływie określonego czasu. Wysyłają one sygnał do programu, aby się zamknął bez faktycznego skupienia, stąd zrzut ekranu Boba z napisem „Kliknij OK, przełącz na Word” w tej kolejności.
IMSoP,
@IMSoP: Zdaję sobie sprawę, że istnieje więcej „inżynieryjnych” sposobów, aby poprosić o zamknięcie aplikacji, ale w myślach narysowałem linię, w której myślę, że „powszechne użycie” kończy się, ponieważ spodziewałbym się, że OP określi dokładnie, co robiliby to, gdyby wykraczało to poza „powszechne użycie”.
Lekkość ściga się z Moniką
11
@LightnessRacesinOrbit Przyznaję, że Menedżer zadań jest bardziej „ekspercki”, ale nie byłbym zaskoczony, gdyby ludzie myśleli, że zamknięcie czegoś z paska zadań jest całkowicie normalne. W rzeczywistości teraz zdaję sobie sprawę, że nie trzeba nawet klikać prawym przyciskiem myszy, jest tam czerwony przycisk [x], jeśli najedziesz myszką na grupę lub wyświetlisz małą miniaturkę. Różne rzeczy wydają się oczywiste dla różnych ludzi.
IMSoP,
@IMSoP: To prawda.
Lekkość ściga się z Moniką
20

W oknie dialogowym może być coś takiego:

Dokonałeś zmian w dokumencie, czy chcesz je zapisać? (Tak nie)

Nie ma tutaj oczywistej właściwej odpowiedzi. Być może przypadkowo uszkodziłeś dokument (na przykład kot przeszedł przez klawiaturę), w którym to przypadku odpowiedź brzmi „Nie” lub być może spędziłeś godziny, wpisując zmiany, w którym to przypadku odpowiedź brzmi „Tak”.

Najbezpieczniejszą rzeczą dla Worda jest odmowa zamknięcia, dopóki nie odpowiesz na pytanie.

Nick Gammon
źródło
8
Jestem pewien, że pytanie dotyczy konkretnie tego błędu.
Bob
12
OK, ale pytanie nie zawierało żadnego konkretnego okna dialogowego. Jestem programistą, rozumiem, czym jest modalne okno dialogowe, ale starałem się odpowiedzieć na pytanie, dlaczego tak się dzieje.
Nick Gammon
IMHO musi pamiętać, że ludzie, którzy nie są programistami, używają programów.
LawrenceC
1

Ponieważ program został zaprojektowany w ten sposób, aby uniknąć działań, których użytkownik może nie chcieć.

Zazwyczaj okno dialogowe jest wyświetlane, gdy program wymaga od użytkownika wykonania pewnych czynności. Zamykanie niezapisanego dokumentu jest doskonałym przykładem: okno dialogowe oferuje zapisanie zmian, odrzucenie zmian lub przerwanie zamykania i powrót do edycji. Program celowo odmawia zamknięcia bez odpowiedzi na to pytanie, ponieważ zamknięcie wymusi NIEKTÓRE działanie. Program nie może sam zdecydować np. odrzuć ostatnią edycję, a wręcz przeciwnie, zastąp prawidłową wersję pisaniem cat-on-the-keyboard.

Nawet jeśli weźmiemy pod uwagę okno dialogowe niezwiązane z zamykaniem, zwykle oznacza to, że jakiś proces jest w toku, jeszcze się nie zakończył, a użytkownik musi zdecydować, którą drogą wybrać. Nie można go po prostu „przerwać”, ponieważ przerywanie to także działanie, którego użytkownik może nie chcieć.

Upraszcza także projektowanie programu, ponieważ jego twórcy nie muszą tworzyć „bezpiecznego wyjścia” z każdej funkcji.

Obecnie większość okien dialogowych nie jest modalna w sensie technicznym (program pozostaje odpowiedzialny), ale nadal łatwiej jest uczynić je modalnymi w szerszym sensie logiki przepływu programu.

Agent_L
źródło
0

Mogę się mylić, ale podejrzewam, że to sięga do starego, typowego zachowania kontrolnego dialogu.

Niektóre z nich, jeśli zostały zabite nagle bez powrotu, miały nieprzyjemne skutki uboczne, czasem nawet poza martwym programem i nie było sposobu, aby uciec od nich grzecznie we wszystkich przypadkach, jeśli robili coś na poziomie systemu, który wymagałby wkładu użytkownika.

Co do tego, dlaczego nadal tak jest, ludzie przyzwyczaili się do tego, programiści programowali to założenie przez dziesięciolecia, a co ważniejsze, nie-programiści używali tych okien dialogowych w swoich skryptach automatyzacji biura, a Microsoft jest niczym, jeśli nie ściśle przestrzega celów wstecznej kompatybilności .

Rachunek
źródło
0

Za zasłonami program (w naszym przypadku jest to MS Word) tworzy „moduł obsługi zdarzenia kliknięcia przycisku X” podczas tworzenia okna. Gdy pojawia się okno dialogowe, Word to rejestruje. Następnie w module obsługi przycisku X kliknięcie przycisku X sprawdza nagrane otwarte okna dialogowe. Jeśli są, program obsługi przerywa operację zamykania. Jeśli nie, to kończy działanie programu, a system operacyjny czyści pamięć zajętą ​​przez program. Tak to działa.

Vladislav Toncharov
źródło