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);
}