请问,如何在鼠标移动时,防止图像闪烁?

解决方案 »

  1.   

    使用内存绘图:
    void C**View::OnMouseMove(UINT nFlags, CPoint point) 
    {
            CDC *pdc=this->GetDC();
            CDC   MenDC;   
            CBitmap   bm;
            
            CRect rt;
            GetClientRect(&rt);
            MenDC.CreateCompatibleDC(pdc);   
            bm.CreateCompatibleBitmap(pdc,rt.Width(),rt.Height());   
            MenDC.SelectObject(&bm);
            //-------------------------------------------------------------------
            MenDC.FillSolidRect(0,0,rt.Width(),rt.Height(),RGB(255,255,255));//用白色清屏
            
            MenDC.MoveTo()  //在这里绘图
            MenDC.LintTo()
            //-------------------------------------------------------------------
            pdc->BitBlt(0,0,rt.Width(),rt.Height(),&MenDC,0,0,SRCCOPY);  
            MenDC.DeleteDC();   
            bm.DeleteObject();
            ReleaseDC(pdc);
        CScrollView::OnMouseMove(nFlags, point);
    }
      

  2.   

    开双buffer,这要看你的开发环境了。
    设置DoubleBuffer的属性值为真。
      

  3.   

    呵呵这个是cbuilder的,vc下没这个,只能自己写代码。
      

  4.   

    用内存DC,我刚做了一个鼠标拖动在对话框上画线的程序。
    将要画在屏幕上的图先画到内存DC中,然后一次贴到屏幕上,这样就可以避免闪烁了