RT

解决方案 »

  1.   

    BOOL CToolsBar::OnEraseBkgnd(CDC* pDC)
    {
       if (m_dcMem.GetSafeHdc() == NULL)
       { 
            m_dcMem.CreateCompatibleDC(pDC);
            m_bmpInitTool.LoadBitmap(IDB_INITTOOL);
        }
        
        m_dcMem.SelectObject(&m_bmpInitTool);
        FormatBasicInfoArea(&m_dcMem);
        pDC->BitBlt(0, 0, 224, 768, &m_dcMem, 0, 0, SRCCOPY); 
        return true;
    }FormatBasicInfoArea(&m_dcMem);里面绘制图形,每次不一样。
    整个程序定时刷新,为什么前次绘制的图形还存在?怎样把m_dcMem里的绘制信息清理掉??
      

  2.   

    OnEraseBkgnd用于擦除背景。默认的话,是用注册类时说明的HPEN,HBRUSH把背景刷一遍。而你没有调用默认函数,所以原来的东西没被擦掉。
    第一行加上CDialog::OnEraseBkgnd(pDC);应该就可以。
    不过这样会引起画面闪烁。如果是自绘控件的话,一般这个函数要重写成空以防止背景的擦除,或者把类里那个HBRUSH注册成空刷子。至于要怎么把原先的东西擦掉,那要看你OnPaint()里怎么写了,把整个区域全重画一次好了。