在mfc中移动对象

在mfc中移动对象,mfc,onmousemove,Mfc,Onmousemove,我正在尝试将我创建的椭圆移动到另一个位置。之前我检查了鼠标是否在椭圆上,并更改椭圆的颜色。现在我有一个问题,移动椭圆,我做的。下面是我的Buttondown事件处理程序代码 CClientDC(本); 正确无误; GetClientRect(&rect); dc.SetMapMode(MM_); dc.SetWindowExt(100100); dc.SetViewportExt(rect.Width(),rect.Height()); //正确的矩形椭圆=新的正确(0,0,12,7); 正确的

我正在尝试将我创建的椭圆移动到另一个位置。之前我检查了鼠标是否在椭圆上,并更改椭圆的颜色。现在我有一个问题,移动椭圆,我做的。下面是我的Buttondown事件处理程序代码

CClientDC(本);
正确无误;
GetClientRect(&rect);
dc.SetMapMode(MM_);
dc.SetWindowExt(100100);
dc.SetViewportExt(rect.Width(),rect.Height());
//正确的矩形椭圆=新的正确(0,0,12,7);
正确的矩形椭圆(椭圆.cx,椭圆.cy,(椭圆.cx)+12,(椭圆.cy)+7);
CRgn-elipseRgn;
elipseRgn.CreateEllipticRgnIndirect(rectEllipse);
if(elipseRgn.RectInRegion(&rectEllipse))
{
SetCapture();
mouseCapture=true;
dc.DPtoLP(&point);
如果(elipseRgn.PtInRegion(点))
{
CBrush-myBrush;
CreateHatchBrush(HS_交叉,RGB(0,0255));
dc.选择对象(myBrush);
dc.椭圆(椭圆.cx,椭圆.cy,(椭圆.cx)+12,(椭圆.cy)+7);
无效竖立(矩形椭圆,假);
}
}
CDialogEx::ONLBUTDOWN(nFlags,点);
}
这是我的OnMouseMove事件处理程序代码:

正确的矩形椭圆(椭圆.cx,椭圆.cy,(椭圆.cx)+12,(椭圆.cy)+7);
如果(鼠标夹)
{
无效竖立(矩形椭圆,真);
椭圆.cx=点.x;
椭圆.cy=点.y;
新的(ellipse.cx,ellipse.cy,(ellipse.cx)+12,(ellipse.cy)+7);
无效(新的,正确的);
}
每次我运行代码并尝试移动这个椭圆,当鼠标左键按下椭圆时,椭圆在按下鼠标的位置被擦除。我需要在屏幕上移动这个椭圆,并在椭圆上按下鼠标按钮,以保持新的颜色。有人能帮我解决这个问题吗


谢谢你

这幅画只能用你的OnPaint方法画。为代表椭圆当前位置的正确变量创建一个成员变量,并执行整个绘图。请检查MSDN上提供的DrawCli示例。谢谢大家。是的,问题是我没有在OnPaint()中重新绘制新的椭圆。我还有一个问题。在做了所有这些之后,我必须在盒子周围移动这个椭圆,当我触摸我制作的两个矩形时,矩形必须将颜色更改为红色,并在矩形的中心显示msg。我知道,我必须使用Crgn的成员函数,但每次我执行程序时,都会说有错误?!这是我的OnMouse移动事件:绘制应该只在OnPaint方法中发生。为代表椭圆当前位置的正确变量创建一个成员变量,并执行整个绘图。请检查MSDN上提供的DrawCli示例。谢谢大家。是的,问题是我没有在OnPaint()中重新绘制新的椭圆。我还有一个问题。在做了所有这些之后,我必须在盒子周围移动这个椭圆,当我触摸我制作的两个矩形时,矩形必须将颜色更改为红色,并在矩形的中心显示msg。我知道,我必须使用Crgn的成员函数,但每次我执行程序时,都会说有错误?!这是我的OnMouse移动事件: