4.0 120
4.2 130
4.4 150
4.6 120
4.8 100
class CStep1View : public CView { protected: // シリアライズ機能のみから作成します。 CStep1View(); DECLARE_DYNCREATE(CStep1View) // アトリビュート public: CStep1Doc* GetDocument(); //ここで変数宣言する double x[100], y[100]; int ndata;
つぎに上のメニューバーの(すべてのクラスメンバ)とかかれているところをクリックし、ID_File_Openを選択します。その横の箱からCOMMANDを選択しクリックする(選択だけでなく必ずクリックする。)するとメンバ関数の追加というメッセージボックスが表示され関数名の入力画面になる。デフォルトはOnFileOpenとなっているのでこれでよければOKをクリックする。
問題のファイルからの入力ですが、ここではファイルストリームを使ってC++流でやってみます。
まず、ファイルストリームをつかうためにソースファイルの上のほうでfstream.hを読み込みます。
#include <fstream.h>
void CStep1View::OnFileOpen() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください CFileDialog filedlg(TRUE, "dat", "*.dat"); CString filename; int nd; nd=0; if( filedlg.DoModal() == IDOK) { filename = filedlg.GetPathName(); ifstream mystream(filename); while(!mystream.eof()) { mystream >> x[nd] >> y[nd]; nd=nd+1; } ndata=nd-1; mystream.close(); } }
うえと同じような手順でID_FILE_SAVEのメッセージハンドラを用意します。以下のようにコード編集をする。
void CStep1View::OnFileSave() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください CFileDialog filedlg(FALSE, "dat", "*.dat"); CString filename; if( filedlg.DoModal() == IDOK) { filename = filedlg.GetPathName(); ofstream mystream(filename); for (int i=0; i < ndata; i++) { mystream << x[i] << ' ' << y[i] << endl; } mystream.close(); } }