Aoi32(0, 0, 6, 2/Osaki #61) -閉じた時に保存するかどうか確認するダイアログとその処理.

閉じる時に変更されていた場合、保存するかどうかの確認ダイアログを出して、「はい」なら保存して閉じる、「いいえ」なら保存しないで閉じる、「キャンセル」ならそもそも閉じない、という処理にする。

MainWindow.cppで、

OnCloseで変更状態ならフラグを立てて、"変更内容を保存しますか?"とYESNOCANCELなダイアログを表示。
「はい」を選んだ場合、すでに既存のファイルを開いている場合は、ファイルダイアログを表示せずに上書き保存して、0を返してウィンドウを閉じる。
ファイルを開いていない場合は、ファイルダイアログが表示され、ファイル名を付けることになる。ファイル名を指定したら、保存をして0を返して閉じるが、キャンセルの場合は-1を返してウィンドウを閉じない。
「いいえ」の場合は、もちろん保存しないで0を返してウィンドウを閉じる。
「キャンセル」の場合は、-1を返してウィンドウを閉じない。

開く
開く

ファイルを開いて、

初期状態
初期状態

こうなっているとする。

追加入力
追加入力

このように追加入力する。
閉じようとすると、

終了確認
終了確認

こうなるので「OK」
すると、

保存確認
保存確認

こうなる。
これで「はい」を選択すると、上書き保存されて終了するので、

次開いた時
次開いた時

次に開いた時、

保存されてる
保存されてる

保存されてる。

さらに追加
さらに追加

さらに追加をして、閉じようすると、

終了確認
終了確認

これが出て、「OK」を押すと、

保存確認
保存確認

これが出るので、今度は「いいえ」にすると終了する。

次に開いた時
次に開いた時

次に開いた時、

保存されてない
保存されてない

今度は保存されてない。

入力して
入力して

入力して、

終了確認
終了確認

終了確認で「OK」で、

キャンセル
キャンセル

今度はここで「キャンセル」を押すと、

閉じない
閉じない

閉じない。

今度は、

開いて
開いて

開いて、

このまま閉じる
このまま閉じる

こうなっているものをこのまま閉じると、

終了確認
終了確認

終了確認は出るが、これで「OK」を押しても、変更されていないのでこのまま閉じる。

新規に起動
新規に起動

今度は、新規に起動して、

入力
入力

入力して、

終了確認
終了確認

閉じるとこれが出て、「OK」を押すと、

保存確認
保存確認

保存確認ダイアログが出る。「はい」を押すと、

名前を付けて保存
名前を付けて保存

既存のファイルではなく、新規のファイルなので、「名前を付けて保存」ダイアログが出る。

名前を付ける
名前を付ける

名前を付けて、保存する。

今度開いたときは、

ファイルができてる
ファイルができてる

ファイルができてるので、

読み込める
読み込める

読み込める。

新規
新規

新規に作ろうとして、

終了確認
終了確認

ここで「OK」で、

保存確認
保存確認

ここでも「はい」で、

ファイル名指定
ファイル名指定

ファイル名を指定せずキャンセルをすると、保存されないがウィンドウも閉じない。(保存確認のキャンセルと同じ)

-閉じた時に保存するかどうか確認するダイアログとその処理. · bg1bgst333/Aoi32@9a69756 · GitHub