変更されたかどうかのフラグを追加し、ファイルを開いた時やウィンドウを閉じた時に、EM_GETMODIFYでエディットコントロールの状態をチェックしてみた結果、システムからの変更(今回は読み込み時のSetWindowTextのみだが)はEM_GETMODIFYの対象外であることがわかった。
MainWindow.hで、
CMainWindowに、変更されたかどうかのフラグm_bModifiedを追加。
(当初、CTextFileかなとおもったが、あちらはファイルを管理するものだからそこではない。ただ、だったらCEditかなともおもうが、文字コードや改行コードなどのメニューで切り替えられる状態もあるので、ちょっとそれも今のところは違うかなとおもっている。)
MainWindow.cppでは、
コンストラクタやデストラクタでm_bModifiedをFALSE。
OnCreate、OnDestroyでもFALSE。
OnFileOpenでファイルを読み込み、エディットコントロールにセットした後で、EM_GETMODIFYで変更状態をチェック。
閉じる時も、EM_GETMODIFYでチェックをする。
ファイルを開くと、
何もないエディットコントロールに読み込んだテキストがセットされたのだから、変更されたフラグが立つものだとおもったら、"Not Modified!"。
システムというかAPIであるSetWindowTextでの変更は対象外だということがわかる。
閉じようとすると、確認ダイアログが出るので、ここでOKを押すと、
当然、ここでのチェックも"Not Modified!"となる。
改めて、もう一度テストしてみる。また、開くと、
当然、"Not Modified!"。
読み込んだら、今度は手入力で変更してみる。
これで閉じると、
これが出て、OKを押すと、
今度は"Modified!"になっている。
つまり、手入力で変更された時のみ、フラグが立つようになっている。