请教MFC怎么擦除矩形区域

请问MFC如何擦除矩形区域
C/C++ code

//画透明矩形

void CDTvOptionWnd::DrawRect(CRect cp1)
{
    CClientDC pDC(this);
    CBrush *cbrush=CBrush::FromHandle(HBRUSH(GetStockObject(NULL_BRUSH))); 
    CBrush *Firstcbrush=pDC.SelectObject(cbrush); 
    CPen newPen(PS_SOLID,2,RGB(255,102,0));
    CPen* pOldPen=pDC.SelectObject(&newPen);
    pDC.Rectangle(cp1); 
    pDC.SelectObject(Firstcbrush);

    pDC.SetROP2(R2_XORPEN);
    ReleaseDC(pDC);
}


这样写应该是矩形区域画出之后就擦除了,但没效果,各位前辈指导指导,先谢过大家了

------解决方案--------------------
InvalidateRect();
------解决方案--------------------
画完后用Invalidate();
void Invalidate( BOOL bErase = TRUE ); 
  该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw函数,实际的重绘工作由OnDraw来完成。参数bErase为TRUE时,重绘区域内的背景将被擦除,否则,背景将保持不变。 

------解决方案--------------------
给你修改了一下
在下一次WM_PAINT前
第奇数次调用此函数都会出现矩形
第偶数次调用都会擦除。

放在OnLButtonDown中测试一下
OnLButtonDown()
{
CRect rt(50,50,200,200);
DrawRect(rt);// 画出矩形
}

点了看效果
第一次按下鼠标画出矩形
第二次按下矩形消失
第三次按下画出
第四次按下消失
……
……
……


C/C++ code

void CDTvOptionWnd::DrawRect(CRect cp1)
{
    CClientDC pDC(this);
    pDC.SetROP2(R2_XORPEN);
    CBrush *Firstcbrush=pDC.SelectStockObject(NULL_BRUSH); 
    CPen newPen(PS_SOLID,2,RGB(255,102,0));
    CPen* pOldPen=pDC.SelectObject(&newPen);
    pDC.Rectangle(cp1); 
    pDC.SelectObject(Firstcbrush);
    ReleaseDC(pDC);
}

------解决方案--------------------
这样写应该是矩形区域画出之后就擦除了,但没效果,各位前辈指导指导,先谢过大家了
=======
为什么画好了之后就擦除了啊?没看见你写擦除代码啊?你将这个:pDC.SetROP2(R2_XORPEN);
放在最后应该没有什么用吧,后面也没有绘图语句,你改绘图模式干什么?
------解决方案--------------------
是不是因为这个函数执行以后就return了?之前执行的操作以及资源全部被清空..

我看孙鑫大大的视频看多了,到处充斥着这种思想~