我用下面的代码在某个窗口边上画一个方框,
实际上绘在桌面的DC上
CDC* pdc=new CDC;
HDC hdc=GetDC(NULL);
pdc->Attach(hdc);
……
得到这个窗口的rect,
pdc->Rectangle(Clientrect);
……
然后用任何方法都擦不掉
包括对这个窗口,窗口的parent和桌面使用
Invalidate ,InvalidateRect
但是用另一个窗口遮挡一下这个窗口,然后放开,就把方框擦掉了
怎样才能擦除我画的东西?

解决方案 »

  1.   

    InvalidateRect(hwnd,&rect/*或者为NULL就是全窗口*/,FALSE);
      

  2.   

    实际情况是这样:
    我希望把鼠标移动到一个窗口或者控件上的时候
    在窗口或者控件周围画一个方框,鼠标移开以后把方框擦掉
    我是在桌面dc上绘图,用xor的画笔,
    每次进入一个窗口和离开一个窗口各绘制一次,这样把它擦掉
    可是有一种情况会出问题:
    窗口a和b部分重叠
    窗口a在前,处于激活状态,鼠标在b上移动(b仍未激活),在b周围绘方框
    也就是部分绘在a上了,然后直接把鼠标移动到a中,
    这时候a中的线条无论怎样都擦不去了,只有把a遮挡一下在显示才能恢复正常
      

  3.   

    updatewindow,InvalidateRect,Invalidate,redrawwindow,sendmessage(WM_PAINT……针对窗口,父窗口和桌面的情况都试过了,不管用