我在一幅矢量图上定时画东西,我用到了双缓冲,但是运行的时候,当定时启动画东西时, 
一直有一个白框闪(大小为rect.Width()-200,rect.Height()),遮住了矢量图,不知哪写得不对,我是新手,最好有代码,请前辈们帮帮忙!! 
    在CmyView::OnDraw(CDC *pDC)中调入的自己画东西的函数: 
   
  部分代码如下: 
    在画东西的函数中:     CDC MemDC; 
      CBitmap MemBitmap; 
      
      MemDC.CreateCompatibleDC(pDC); 
    CRect rect; 
      GetClientRect(&rect); 
      MemBitmap.CreateCompatibleBitmap(pDC,rect.Width()-200,rect.Height()); 
      CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap); 
      MemDC.FillSolidRect(0,0,rect.Width()-200,rect.Height(),RGB(255,255,255)); 
      MemDC.SetBkMode(TRANSPARENT);       .... 这段是我画东西的代码 略 
  
   pDC->BitBlt(0,0,rect.Width()-200,rect.Height(),&MemDC,0,0,SRCCOPY); 
    MemBitmap.DeleteObject(); 
    MemDC.DeleteDC(); 
       

解决方案 »

  1.   

    应该是MemDC.FillSolidRect(0,0,rect.Width()-200,rect.Height(),RGB(255,255,255)); 的问题
    你把它注释掉看看
      

  2.   

    http://www.vckbase.com/document/viewdoc/?id=1612
      

  3.   

    截获 WM_ERASEBKGND 让他不作任何事,
    在有你的缓存DC 不要每次都新建删除,应该保留,这样会提高效率
      

  4.   

     在WM_ERASEBKGND消息响应函数中return TRUE 
      

  5.   

    要屏蔽WM_ERASEBKGND 。另外自己绘制的背景注意对比度
      

  6.   

    定时画图,如果频率较高时,应该直接用GetDC、ReleaseDC或者用CClientDC局部对象来画,不要频繁调用Invalidate/InvalidateRect。