プログラムの実装手順

クラス関数の設定

今度はボタンを選択状態にして (マウスでクリックして)、 ClassWizard をたちあげて、メッセージマップを見る。

Button1をクリックすると,メンバ関数の追加のダイアログがでるので,OKボタンをクリックすると,次のようなOnButton1()イベントハンドラが表示されるので,$ \{ \}$の中に以下のようなコードを記述する。

\framebox{
\begin{tabular}{l}
void CDialog1Dlg::OnButton1() \\
\{\\
\hspace{1cm} // TODO: この位置にコントロール通知ハンドラ用のコードを追加する\\
\}
\end{tabular}} =======================================================
void CDialog1Dlg::OnButton1()
{
// ファイルダイアログを作る
ifstream fin;
CFileDialog f(TRUE);
if(f.DoModal()==IDOK){
// ファイルを開く
fin.open(f.GetFileName());
if(fin.fail()){
AfxMessageBox("ファイルをオープンできません");
fin.close();
}
// ファイルを読んでエディットコントロールへ出力 char buf[80];
m_sEdit ="";
while(fin.getline(buf,80)){
m_sEdit = m_sEdit + buf + "¥#yen;r ¥#yen;n";
}
fin.close();
UpdateData(FALSE);
}
}
=======================================================

データのグラフ表示

=======================================================
void CDataRead1Dlg::OnButton2()
{
CWnd$ \ast$ h = GetDlgItem(IDC_PICTURE);
CDC$ \ast$ pDC=h-$ >$GetDC();
CRect r; // 長方形データを格納する場所を設定
h-$ >$GetClientRect(&r); // クライアント領域を r に格納
int pw,ph;
pw=r.right;
ph=r.bottom;
//目盛線をシアンで描く。
CPen p(PS_SOLID,1,RGB(0,255,255));
CPen$ \ast$ oldp=pDC-$ >$SelectObject(&p);
//縦の目盛線群を描く
double x;
double dx=pw/10; // 目盛線の間隔
for(x=0;x<=pw;x+=dx){
pDC-$ >$MoveTo(int(x),0);
pDC-$ >$LineTo(int(x),ph);
}
//横の目盛線群を描く
double y;
double dy=ph/10; // 目盛線の間隔
for(y=0; y$ <$=ph; y+=dy){
pDC-$ >$MoveTo(0,int(y));
pDC-$ >$LineTo(pw,int(y));
}
// ペンを戻す
pDC-$ >$SelectObject(oldp);
//x軸を黒い太字で描く
CPen pen(PS_SOLID,2,RGB(0,0,0));
CPen$ \ast$ oldpen=pDC-$ >$SelectObject(&pen);
int cx,cy;
cx = pw/2;
cy = ph/2;
pDC-$ >$MoveTo(0,cy);
pDC-$ >$LineTo(pw,cy);
//y軸を黒い太字で描く
pDC-$ >$MoveTo(cx,0);
pDC-$ >$LineTo(cx,ph);
// 使い終わったら、もとのペンに戻す
pDC-$ >$SelectObject(oldpen);
// データを読み込んで 点(小さい円)を描いていく
string st;
int xs,ys;
UpdateData(TRUE);
st = m_sEdit;
istringstream is(st);
// ブラシとペンの設定(赤色)
CBrush b(RGB(255,0,0));
CPen pred(PS_SOLID,1,RGB(255,0,0));
CBrush* oldb = pDC-$ >$SelectObject(&b);
CPen$ \ast$ oldpred = pDC-$ >$SelectObject(&pred);
while(!is.eof()){
is $ >>$ xs $ >>$ ys;
pDC-$ >$Ellipse(cx+xs -2,cy-(ys-2),cx+xs+2,cy -(ys+2));
}
// ペンとブラシを元に戻してpDCを開放
pDC-$ >$SelectObject(oldb);
pDC-$ >$SelectObject(oldpred);
h-$ >$ReleaseDC(pDC);
}
=======================================================

消去

=======================================================
void CDataRead1Dlg::OnButton3()
{
CWnd* h =GetDlgItem(IDC_PICTURE);
h-$ >$ Invalidate();
CWnd* h1 = GetDlgItem(IDC_EDIT1);
h1-$ >$SetWindowText("");
}
=======================================================