プログラムの実装手順

クラス関数の設定

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

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

\framebox{
\begin{tabular}{l}
void CDialog1Dlg::OnButton1() \\
\{\\
\hspace{1cm} // TODO: この位置にコントロール通知ハンドラ用のコードを追加する\\
\}
\end{tabular}}

=======================================================
void CDialog1Dlg::OnButton1()
{
CWnd$ \ast$ h = GetDlgItem(IDC_PICTURE);
CDC$ \ast$ pDC=h-$ >$GetDC();
CPen p(PS_SOLID, 1, RGB(0,0,255));
CPen$ \ast$ oldp=pDC-$ >$SelectObject(&p);
pDC-$ >$MoveTo(10,10); // 座標(10,10)に移動
pDC-$ >$LineTo(200,200); // 座標(200,200)まで線を引く
CFont font;
font.CreateFont(30,0,0,0,FW_HEAVY,FALSE,FALSE,FALSE,
SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
DRAFT_QUALITY,DEFAULT_PITCH,"MS Pゴシック");
CFont$ \ast$ oldfont=pDC-$ >$SelectObject(&font);
pDC-$ >$SetTextColor(RGB(255,0,0));
pDC-$ >$TextOut(100,100,"直線");
// ペンを戻す
pDC-$ >$SelectObject(oldp); // ペンを戻す
pDC-$ >$SelectObject(font); // フォントを戻す
h-$ >$ReleaseDC(pDC);
}
=======================================================

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

=======================================================
void CDialog1Dlg::OnButton2()
{
CWnd$ \ast$ h = GetDlgItem(IDC_PICTURE);
h-$ >$Invalidate();
}
=======================================================

演習問題 4..1  

CWnd$ \ast$ h = GetDlgItem(IDC_PICTURE);
CDC$ \ast$ pDC=h-$ >$GetDC();
h-$ >$ReleaseDC(pDC);
を用いる代わりに,
CWnd$ \ast$ myPICT = GetDlgItem(IDC_PICTURE);
CDC$ \ast$ pDC = new CClientDC(myPICT);
で,ピクチャコントロール(IDC_PICTURE)に対応するウィンドウをmyPICTに設定し,myPICTに対応する描画領域をCClientDCで作成することができる。 また,
CPen p(PS_SOLID, 1, RGB(0,0,255));
CPen$ \ast$ oldp=pDC-$ >$SelectObject(&p);
pDC-$ >$SelectObject(oldp); // ペンを戻す
を用いる代わりに
CPen$ \ast$ myPen = new CPen;// myPenはCPenクラスのオブジェクト
myPen-$ >$CreatePen(PS_SOLID,1,RGB(0,0,255); //myPenを赤の実線を引くペンに設定
pDC-$ >$SelectObject(myPen); // myPenを選ぶ
delete myPen; // myPenを消去
で,ペンの設定ができる。 これを用いて上のプログラムに新しいボタンを設けて,点(100,10)から点(100,10)まで線を赤で描きなさい。