アットウィキロゴ
 
クラスビュー
→ 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