Formにマウスで何かを書くプログラムサンプル

Formにマウスで何かを書くプログラムサンプル。

必要なのは、マウスアップ、マウスダウン、マウスムーブ、のハンドラ、それとボタンが押されているのを判定するためのフラグです。

やっていることは、マウスボタンを押している間、マウスを動かすとマウスカーソルの位置に円を書くようになってます。四角を書く場合はRectangle、これはペンの形ということになるのかな。
 

int mflag = 0;
 
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
 // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
 
 mflag = 1;
 
 CFormView::OnLButtonDown(nFlags, point);
}
 
void CDrawView::OnMouseMove(UINT nFlags, CPoint point)
{
 // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
 
 if (mflag==1){
  CClientDC dc(this);
 
 //----- ペン
 CPen newPen;
 CPen* oldPen;
 newPen.CreatePen(PS_SOLID,1,RGB(255,255,255)); // ペンの色
 oldPen=dc.SelectObject(&newPen);
 
 //----- ブラシ
 CBrush newBrush;
 CBrush* oldBrush;
 newBrush.CreateSolidBrush(RGB(0,128,255)); // ブラシの色
 oldBrush=dc.SelectObject(&newBrush);
 
 //----- 円を書く
 dc.Ellipse(point.x-10,point.y-10,point.x+10,point.y+10);
 //----- ブラシを戻す
 dc.SelectObject(oldBrush);
 newBrush.DeleteObject();
 //----- ペンを戻す
 dc.SelectObject(oldPen);
 newPen.DeleteObject();
}
 
CFormView::OnMouseMove(nFlags, point);
}
 
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
 // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
 mflag = 0;
 
 CFormView::OnLButtonUp(nFlags, point);
}