我用VC写的程序界面上贴了一些位图
当其他程序窗口在我的程序界面上晃动时,会有一条一条的纹路
当我把我的程序一移动就好了
是不是我在Paint或WM_PAINT里面少了什么

解决方案 »

  1.   

    我的也出现过这种现象,
    现在刚解决掉,
    在适当的地方加上UpdateWindow();刷新下窗口试试。
      

  2.   

    使用双缓存贴图就好了~
    ====================
    在OnDraw(CDC *pDC)中:
          CDC MemDC; //首先定义一个显示设备对象
          CBitmap MemBitmap;//定义一个位图对象
          //随后建立与屏幕显示兼容的内存显示设备
          MemDC.CreateCompatibleDC(NULL);
          //这时还不能绘图,因为没有地方画 ^_^
          //下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小
          MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
          //将位图选入到内存显示设备中
          //只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
          CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
          //先用背景色将位图清除干净,这里我用的是白色作为背景
          //你也可以用自己应该用的颜色
          MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
          //绘图
          MemDC.MoveTo(……);
          MemDC.LineTo(……);
          //将内存中的图拷贝到屏幕上进行显示
          pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
          //绘图完成后的清理
          MemBitmap.DeleteObject();
          MemDC.DeleteDC();
      

  3.   

    BOOL OnEraseBkgnd(CDC* pDC)
    {
         CRect rect;
         GetClientRect(&rect);
         ScreenToClient(&rect);   
         pDC->ExcludeClipRect(&rect);
    }