怎么插除余迹

如何插除余迹
void CChangshiView::OnDraw(CDC* pDC)
{
CChangshiDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CBrush brush(RGB(0,0,255));
pDC->SelectObject(&brush);
  pDC->Ellipse(m_Rect);
}


void CChangshiView::OnMouseMove(UINT nFlags, CPoint point) 
{
CClientDC dc(this);
  CRect OldRect=m_Rect; //将图形的旧矩形保存下来
CSize MySize=point-m_Rect.CenterPoint(); //求当前鼠标位置与原先矩形中心的偏移大小
dc.SetROP2(R2_NOTMASKPEN);
m_Rect.SetRect(100,100,200+MySize.cx,200+MySize.cy);
//m_Rect.OffsetRect(MySize); //求新图形的矩形位置
//OldRect.UnionRect(OldRect,m_Rect); //求旧图形与新图形的并集 解释不清楚
//InvalidateRect(OldRect,false); //将指定矩形区域OldRect内容刷新
InvalidateRect(m_Rect); //指定当前区域无效,并发送W_paint 消息,调用OnDraw() 函数,使窗口重画 

   
CView::OnMouseMove(nFlags, point);
}


但是在画椭圆时,随着鼠标的移动,保留着余迹,如何插除,请各位高手指教


------解决方案--------------------
请参考
void CChangshiView::OnMouseMove(UINT nFlags, CPoint point)
{
...
HPEN pPenOld = (HPEN)SelectObject(hDC, hDottedPen);
SetROP2(hDC, R2_XORPEN); // 设置画图模式: 与背景异或
// 水平线
if(oldy>rcScrWorkDst.top && oldy<rcScrWorkDst.bottom) // 清除旧线
{
MoveToEx(hDC, rcScrWorkDst.left+1, oldy, NULL);
LineTo(hDC, rcScrWorkDst.right-1, oldy);
}
if(point.y>rcScrWorkDst.top && point.y<rcScrWorkDst.bottom) // 画新线
{
MoveToEx(hDC, rcScrWorkDst.left+1, point.y, NULL);
LineTo(hDC, rcScrWorkDst.right-1, point.y);
}
// 垂直线
if(oldx>rcScrWorkDst.left && oldx<rcScrWorkDst.right) // 清除旧线
{
MoveToEx(hDC, oldx, rcScrWorkDst.bottom-1, NULL);
LineTo(hDC, oldx, rcScrWorkDst.top+1);
}
if(point.x>rcScrWorkDst.left && point.x<rcScrWorkDst.right) // 画新线
{
MoveToEx(hDC, point.x, rcScrWorkDst.bottom-1, NULL);
LineTo(hDC, point.x, rcScrWorkDst.top+1);
}
SelectObject(hDC, pPenOld); // 画笔

oldx = point.x;
oldy = point.y;
...
}