当使用SetBkMode(hDC, TRANSPARENT)后,如果动态文本数据变化,则将与先前的显示重叠在一起!

解决方案 »

  1.   

    把你要用文字覆盖的地方用BitBlt函数保存起来,在下一次写文字的时候再把它拷回到原来的位置,即可,我就是怎么做的。当然你的事先计算文本所占区域空间的大小。
      

  2.   

    ........
    CDC memdc;
    memdc.CreateCompatibleDC(pDC); //pDC为一已存在的设备描述表
    CRect rect;
    /*计算机文本显示所需的RECT空间*/
    ............;
    //在第一次显是文本前执行下面语句
    if(bFirstTime){
       memdc.BitBlt(0,0,rect.Width(),rect.Height(),pDC,rect.left,rect.top,SRCCOPY);
       bFirstTime=FALSE;
      }
    pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memdc,0,0,SRCCOPY);
    //显示文本
    ...................;
    .
    .
    .
    .
    ReleaseDC(&memdc);