閉じる時に変更されていた場合、保存するかどうかの確認ダイアログを出して、「はい」なら保存して閉じる、「いいえ」なら保存しないで閉じる、「キャンセル」ならそもそも閉じない、という処理にする。
MainWindow.cppで、
OnCloseで変更状態ならフラグを立てて、"変更内容を保存しますか?"とYESNOCANCELなダイアログを表示。
「はい」を選んだ場合、すでに既存のファイルを開いている場合は、ファイルダイアログを表示せずに上書き保存して、0を返してウィンドウを閉じる。
ファイルを開いていない場合は、ファイルダイアログが表示され、ファイル名を付けることになる。ファイル名を指定したら、保存をして0を返して閉じるが、キャンセルの場合は-1を返してウィンドウを閉じない。
「いいえ」の場合は、もちろん保存しないで0を返してウィンドウを閉じる。
「キャンセル」の場合は、-1を返してウィンドウを閉じない。
ファイルを開いて、
こうなっているとする。
このように追加入力する。
閉じようとすると、
こうなるので「OK」
すると、
こうなる。
これで「はい」を選択すると、上書き保存されて終了するので、
次に開いた時、
保存されてる。
さらに追加をして、閉じようすると、
これが出て、「OK」を押すと、
これが出るので、今度は「いいえ」にすると終了する。
次に開いた時、
今度は保存されてない。
入力して、
終了確認で「OK」で、
今度はここで「キャンセル」を押すと、
閉じない。
今度は、
開いて、
こうなっているものをこのまま閉じると、
終了確認は出るが、これで「OK」を押しても、変更されていないのでこのまま閉じる。
今度は、新規に起動して、
入力して、
閉じるとこれが出て、「OK」を押すと、
保存確認ダイアログが出る。「はい」を押すと、
既存のファイルではなく、新規のファイルなので、「名前を付けて保存」ダイアログが出る。
名前を付けて、保存する。
今度開いたときは、
ファイルができてるので、
読み込める。
新規に作ろうとして、
ここで「OK」で、
ここでも「はい」で、
ファイル名を指定せずキャンセルをすると、保存されないがウィンドウも閉じない。(保存確認のキャンセルと同じ)
-閉じた時に保存するかどうか確認するダイアログとその処理. · bg1bgst333/Aoi32@9a69756 · GitHub