目的:在画线的时候在一个矩形内时时时显示点的坐标。拖动直线时矩形框跟随移动。
问题:在移动的过程中刷新不了上次的矩形框(如何能擦除)?
工程代码见:http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=181977&forum_id=59

解决方案 »

  1.   

    试试BOOL OnEraseBkgnd(CDC* pDC)
    {
         CRect rect;
         ::GetWindowRect(hwnd,&rect);   //hwnd是文本框的句柄
         ScreenToClient(&rect);   
         pDC->ExcludeClipRect(&rect);
    }
      

  2.   


    工程代码见:http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=181977&forum_id=59多谢啊!
      

  3.   

    这么说吧,如果实时的改变显示内容,要不就刷新,要不就贴图,
    因为用Invalidate刷新屏幕会造成闪烁,所以应该用贴图,你把所有的要绘制的东西全部画在一个DC上,然后再贴出来。
    当然你可能会遇到效率的问题,如果每次都要在刷新的后将图像绘制然后再显示这样未免效率会
    降低,所以可以把背景先绘制在一个内存DC中,然后每次只在这个内存DC上绘制局部的小区域,最后把这个合成的图像贴出。如果背景是实时变化的,就要考虑多线程的问题了,辅助线程负责绘制背景,要贴图像的屏蔽码,最后在主线程中贴在窗口DC中。     游戏就是这么做的。
      

  4.   

    先用InvalidateRect把之前的矩形清一下。
      

  5.   

    感谢大家的回复!to:arronbnm() 有没有可以参考的例程小demo?我没做过多线程的。
    InvalidateRect我用了,效率也不理想。