다른 대화 상자가 열린 상태에서 문서를 닫으려고 할 때 Word에서 종종 오류가 발생하지만 그 원인이 무엇인지 알 수 없었 습니다.
다른 대화 상자가 열린 상태에서 문서를 닫으려고 할 때 Word에서 종종 오류가 발생하지만 그 원인이 무엇인지 알 수 없었 습니다.
답변:
대부분의 대화 상자는 " 모달 " 로 간주되므로 대화 상자 가 닫힐 때까지 제어가 기본 프로그램 또는 호출 컨테이너로 다시 전달되지 않습니다. 이것은 의도적으로 설계된 것이며 프로그래머는 창을 모달 또는 비 모달로 만들 수 있습니다. 일반적으로 주 프로그램이 선택 (Ok) 또는 중단 (취소)을 통해 열린 대화 상자가 처리 될 때까지 주 프로그램이 계속 될 수 없거나 지속되지 않아야하는 경우 창은 모달로 정의됩니다.
대화 상자는 다음과 같이 말할 수 있습니다.
문서를 변경했습니다. 저장 하시겠습니까? (예 아니오)
여기에는 분명한 정답이 없습니다. 실수로 문서가 손상되었을 수 있습니다 (예 : 고양이가 키보드 위로 걸어 다니는 경우). 대답이 "아니요"이거나 변경 내용을 입력하는 데 몇 시간을 소비 한 경우에는 대답이 "예"입니다.
Word에서 가장 안전한 방법은 질문에 대답 할 때까지 닫지 않는 것입니다.
프로그램은 이러한 방식으로 설계되었으므로 사용자가 원하지 않는 조치를 취하지 않습니다.
일반적으로 프로그램이 사용자에게 조치를 안내해야하는 경우 대화 상자가 표시됩니다. 저장되지 않은 문서를 닫는 것이 가장 좋은 예입니다. 대화 상자는 변경 사항을 저장하거나 변경 내용을 삭제하거나 종료를 중단하고 편집으로 돌아갑니다. 프로그램을 종료하면 일부 조치가 취해 지므로이 질문에 대답하지 않고 프로그램이 의도적으로 종료를 거부합니다. 프로그램은 예를 들어 자체적으로 결정할 수 없습니다. 최근 편집 내용을 삭제하거나 반대로 키보드를 입력하여 올바른 버전을 덮어 씁니다.
닫는 것과 관련이없는 대화 상자를 고려하더라도 일반적으로 일부 프로세스가 진행 중이며 아직 완료되지 않았으며 사용자는 어떤 방법을 선택해야하는지 나타냅니다. 중단은 사용자가 의도하지 않은 동작이기 때문에 "단순히 중단"될 수 없습니다.
또한 제작자가 모든 기능에서 "안전한 방법"을 만들 필요가 없으므로 프로그램 디자인을 단순화합니다.
오늘날 대부분의 대화 상자는 기술적 인 의미에서 모달이 아니지만 (프로그램은 여전히 책임이 있습니다), 프로그램의 더 넓은 논리 흐름에서 모달로 만드는 것이 더 쉽습니다.
내가 잘못 생각할 수도 있지만, 이것이 이전의 일반적인 대화 제어 동작으로 돌아가는 것 같습니다.
돌아 오지 않고 갑자기 죽으면 몇몇 사람들은 불쾌한 부작용을 겪었으며 때로는 심지어 현재 죽은 프로그램 밖에서도 불쾌한 부작용을 보였으며 모든 경우에 사용자 입력이 필요한 시스템 수준에서 무언가를하고 있다면 정중하게 벗어날 수있는 방법이 없었습니다.
왜 그런 식으로 사람들이 익숙해 졌는지, 수십 년 동안 그 가정으로 프로그래밍 된 개발자 및 더 중요하게 프로그래머가 아닌 사람들은 사무실 자동화 스크립트에서 해당 대화 상자를 사용했으며 Microsoft는 이전 버전과의 호환성 목표를 엄격하게 준수하지는 않습니다. .
커튼 뒤에는 창을 만들 때 프로그램 (이 경우에는 MS Word)이 "X 단추 클릭 이벤트 핸들러"를 작성합니다. 대화 창이 나타나면 Word에서이를 기록합니다. 그런 다음 X 버튼 핸들러에서 X 버튼을 클릭하면 기록 된 열린 대화 상자 창을 확인합니다. 일부가 있으면 처리기가 닫기 작업을 중단합니다. 존재하지 않으면 프로그램을 종료하고 OS는 프로그램이 사용하는 메모리를 정리합니다. 이것이 작동하는 방식입니다.