ダイアログ ボックスが開いている場合、Microsoft Word を閉じることができないのはなぜでしょうか?

ダイアログ ボックスが開いている場合、Microsoft Word を閉じることができないのはなぜでしょうか?

別のダイアログボックスを開いたまま文書を閉じようとすると、Wordでエラーが発生することがありますが、原因がわかりません。なぜそれは起こります。

答え1

ほとんどのダイアログボックスは「モーダルこれは、ダイアログ自体が閉じられるまで、制御がメイン プログラムまたは呼び出しコンテナーに戻らないことを意味します。これは設計によるもので、プログラマーはウィンドウをモーダルにするか非モーダルにするかを選択できます。通常、開かれたダイアログが選択 (OK) または中止 (キャンセル) によって処理されるまでメイン プログラムが続行できない、または続行すべきでない場合、ウィンドウはモーダルとして定義されます。

答え2

ダイアログ ボックスには次のような内容が表示されます。

ドキュメントに変更を加えました。保存しますか? (はい) (いいえ)

ここに明らかな正解はありません。ドキュメントを誤って破損してしまった場合 (たとえば、猫がキーボードの上を歩いてしまった場合)、答えは「いいえ」です。また、変更を入力するのに何時間も費やしてしまった場合、答えは「はい」です。

Word にとって最も安全なのは、質問に答えるまで閉じないことです。

答え3

ユーザーが望まないアクションを実行することを避けるために、プログラムはこのように設計されているからです。

通常、ダイアログ ボックスは、プログラムがユーザーに何らかのアクションを指示する必要がある場合に表示されます。保存されていないドキュメントを閉じることは、その良い例です。ダイアログでは、変更を保存するか、変更を破棄するか、閉じるのを中止して編集に戻るかを選択できます。プログラムは、この質問に答えずに閉じることを意図的に拒否します。閉じると、何らかのアクションが強制的に実行されるためです。プログラムは、たとえば最近の編集を破棄するか、逆にキーボードの CAT 入力で正しいバージョンを上書きするかを独自に決定することはできません。

閉じることに関連しないダイアログを検討する場合でも、通常は何らかのプロセスが進行中であり、まだ完了しておらず、ユーザーがどちらの方向に進むかを決定する必要があることを意味します。中止もユーザーが意図していない可能性のあるアクションであるため、「単純に中止」することはできません。

また、プログラムの作成者はすべての関数の「安全な出口」を作成する必要がないため、プログラムの設計も簡素化されます。

現在、ほとんどのダイアログは技術的な意味ではモーダルではありません (プログラムが引き続き責任を負います) が、プログラムのロジック フローのより広い意味では、ダイアログをモーダルにすることは依然として簡単です。

答え4

裏では、プログラム (この場合は MS Word) がウィンドウを作成するときに「X ボタン クリック イベント ハンドラー」を作成します。ダイアログ ウィンドウがある場合、Word はそれを記録します。次に、X ボタン ハンドラーで、X ボタンがクリックされると、記録されている開いているダイアログ ウィンドウがあるかどうかを確認します。開いているダイアログ ウィンドウがある場合、ハンドラーは閉じる操作を中止します。開いていない場合は、プログラムを終了し、OS はプログラムが使用したメモリをクリーンアップします。これが動作の仕組みです。

関連情報