クラスビュー
→ CChildView
→ プロパティ
→ メッセージ
→ WM_LBOTTONDOWN の右から関数を作る.
WM_LBOTTONDOWN ・・・ 左クリックを押したとき
WM_LBOTTONUP ・・・ 左クリックを離したとき
WWM_MOUSEMOVE ・・・ マウスを動かしたとき
今回はドラッグでラインを引くプログラムを参考にだす.
マウスが押されているかどうかのbool型の m_bMouseLをつくり,
CPoint point(定義済み)が現在の座標なので,
前回の座標をCPoint prevpointとして定義する.
DC.MoveTo(prevpoint);
DC.LineTo(point);
にて線を引く.
void CChildView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO : ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼び出します。
m_bMouseL=TRUE;
prevpoint.x = point.x;
prevpoint.y = point.y;
CWnd::OnLButtonDown(nFlags, point);
}
void CChildView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO : ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼び出します。
if(m_bMouseL){
CClientDC DC(this);
CPen Pen(PS_SOLID,10,RGB(0,0,0));
CPen* pOldPen;
//CBrush Brush(RGB(0,0,0));
// CBrush *pOldBrush;
//ペンとブラシを選択
pOldPen = DC.SelectObject(&Pen);
// pOldBrush = DC.SelectObject(&Brush);
//円を描画
// DC.Ellipse(point.x - 5,point.y - 5, point.x + 5,point.y + 5);
DC.MoveTo(prevpoint);
DC.LineTo(point);
//ペンとブラシを元に戻す
DC.SelectObject(pOldPen);
// DC.SelectObject(pOldBrush);
prevpoint.x = point.x;
prevpoint.y = point.y;
}
CWnd::OnMouseMove(nFlags, point);
}
void CChildView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO : ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼び出します。
m_bMouseL=FALSE;
CWnd::OnLButtonUp(nFlags, point);
}
最終更新:2007年11月23日 20:21