在mfc中移动对象

时间:2016-12-08 22:16:50

标签: mfc onmousemove

我正在尝试将我创建的椭圆移动到另一个位置。以前我检查过鼠标是否在椭圆上并改变了椭圆的颜色。现在我在移动我制作的椭圆时遇到了问题。这是我的Buttondown事件处理程序代码

CClientDC dc(this);
    CRect rect;
    GetClientRect(&rect);
    dc.SetMapMode(MM_ANISOTROPIC);
    dc.SetWindowExt(100, 100);
    dc.SetViewportExt(rect.Width(), rect.Height());



    //CRect rectEllipse = new CRect(0, 0, 12, 7);
    CRect rectEllipse(ellipse.cx, ellipse.cy, (ellipse.cx) + 12, (ellipse.cy) + 7);
    CRgn elipseRgn;


    elipseRgn.CreateEllipticRgnIndirect(rectEllipse);

    if (elipseRgn.RectInRegion(&rectEllipse))
    {
        SetCapture();
        mouseCapture = true;
        dc.DPtoLP(&point);

        if (elipseRgn.PtInRegion(point)) 
        {
            CBrush myBrush;
            myBrush.CreateHatchBrush(HS_CROSS, RGB(0, 0, 255));
            dc.SelectObject(myBrush);
            dc.Ellipse(ellipse.cx, ellipse.cy, (ellipse.cx) + 12, (ellipse.cy) + 7);
            InvalidateRect(rectEllipse, FALSE);
        }

    }



    CDialogEx::OnLButtonDown(nFlags, point);
}

这是OnMouseMove事件处理程序的代码:

CRect rectEllipse(ellipse.cx, ellipse.cy, (ellipse.cx) + 12, (ellipse.cy) + 7);
if (mouseCapture)
{
    InvalidateRect(rectEllipse, TRUE);
    ellipse.cx = point.x;
    ellipse.cy = point.y;
    CRect rectNew(ellipse.cx, ellipse.cy, (ellipse.cx) + 12, (ellipse.cy) + 7);
    InvalidateRect(rectNew, TRUE);
}

每次运行代码并尝试移动此椭圆时,在椭圆上按下鼠标左键时,所有发生的事情都会在按下鼠标的位置擦除椭圆。我需要将这个椭圆移动到屏幕上,鼠标按钮压在椭圆上并保持新的颜色。有人可以帮我解决这个问题吗?

谢谢

0 个答案:

没有答案