Step 5. 解析結果の保存

すでに Step.1 でファイル入出力はやりましたので特に新しいところはないのですが、メニューバーからでなくても入出力できるのを確認します。解析したところで結果を保存するかどうかメッセージボックスを出してYESなら保存ということにします。

1. OnSumData 関数の書き換え

データの総和を求めたあと AfxMessageBox を利用してデータを保存するかどうか尋ねます。使い方はいたって簡単で下記のように使います。

void CStep1View::OnSumData() 
{
    // TODO: この位置にコマンド ハンドラ用のコードを追加してください
    SumData=0.0;

    for (int i=0; i<ndata; i++){
        
        if (x[i]>=Xmin && x[i]<=Xmax && y[i]>=Ymin && y[i]<=Ymax) {

            SumData=SumData+y[i]+Geta;

        }

    }

    MSumData=1;
    
    char name[20], *t1;
    
    t1 = gcvt(SumData, 8, name);
    AfxMessageBox(name, MB_OK|MB_ICONEXCLAMATION);

    //今回はここから
    int ret;

    ret=AfxMessageBox("結果を保存しますか?", MB_YESNO|MB_ICONQUESTION);

    if (ret==IDYES) {

        CFileDialog filedlg(FALSE, "dat", "*.dat");

        CString filename;

        if( filedlg.DoModal() == IDOK)
        {
            filename = filedlg.GetPathName();
            ofstream mystream(filename);

               mystream << SumData << endl;

            mystream.close();
        }

    }
    RedrawWindow();

}