有一个窗口,背景是一幅图。
我想在上面某个位置连续显示时间:
CClientDC dc (this);
dc.SetBkMode(TRANSPARENT);
CTime time=CTime::GetCurrentTime();
CString s=time.Format("%H:%M:%S");
dc.TextOut(0,0,s);
但是实际运行时却出现叠加的现象就是前面显示的时间擦不掉,最后一团模糊。
我该如何做?

解决方案 »

  1.   

    CClientDC dc (this);
    dc.SetBkMode(TRANSPARENT);
    CTime time=CTime::GetCurrentTime();
    CString s;
    s="               ';
    dc.TextOut("");
    s=time.Format("%H:%M:%S");
    dc.TextOut(0,0,s);
    试试先显示空字符串来覆盖
      

  2.   

    创建一个兼容的CBitmap bmp,第一次显示之前,把文字显示区域(CDC::GetTextExtent)的内容复制(BitBlt)到bmp中,以后每次显示之前,把bmp复制到屏幕上,然后才TextOut。如果保留有背景图片的Bitmap对象,可以不用bmp,直接把背景图的那个部分先复制到dc,然后才TextOut。
      

  3.   

    不好,建议后台建立一个DC,上面画屏幕内容,定时BitBlt到屏幕上,每次拷贝完,就在屏幕上显示时间