矩形绘制中闪烁的有关问题(使用橡皮线,但屏幕闪烁)

矩形绘制中闪烁的问题(使用橡皮线,但屏幕闪烁)
矩形绘制中使用橡皮线,但屏幕闪烁。采取两次安下左键来端点的值,用int   m_step   来记录绘制的步骤,代码如下,

void   CCreateRectView::OnLButtonDown(UINT   nFlags,   CPoint   point)  
{
CDC*   pDC=GetDC();
pDC-> SelectStockObject(NULL_BRUSH);

switch(m_step)
{
case   0://第一次按下鼠标左键
m_lup=m_rbp=point;//矩形的左上点和右下点
m_step++;
break;
case   1://第二次按下鼠标左键
                                m_rbp=point;  
m_step=-1;
m_bRect=TRUE;   //标志直线生成
DrawRect(pDC,m_lup,point);

m_step++;
m_bRect=FALSE;
break;
}

ReleaseDC(pDC);

CView::OnLButtonDown(nFlags,   point);
}

void   CCreateRectView::OnMouseMove(UINT   nFlags,   CPoint   point)  
{
CDC*   pDC=GetDC();
int   nDrawMode=pDC-> SetROP2(R2_NOT);   //设置绘图模式
pDC-> SelectStockObject(NULL_BRUSH);

            if(m_step==1&&!m_bRect)//绘制图形的第二步,并且矩形没有生成
{
CPoint   preRbp;
CPoint   curRbp;
                               
                                //获得鼠标所在的前一个位置
preRbp=m_rbp;
curRbp=point;

DrawRect(pDC,m_lup,preRbp);
DrawRect(pDC,m_lup,curRbp);

m_rbp=point;

}

pDC-> SetROP2(nDrawMode);
ReleaseDC(pDC);

CView::OnMouseMove(nFlags,   point);
}

void   CCreateRectView::DrawRect(CDC   *pDC,   CPoint   rup,   CPoint   rbp)
{
        pDC-> Rectangle(CRect(m_lup,m_rbp));
}

请问是怎么回事啊??????????




------解决方案--------------------
DrawRect(pDC,m_lup,preRbp);
DrawRect(pDC,m_lup,curRbp);
前一个是擦除前一个矩形,后一个是重新绘制矩形,于是在部分区域连续出现色彩变换,这就是闪烁的由来,一般采用现在内存DC中绘好,然后再用位块传输的方法解决