我在对话框窗口中的OnPaint函数中绘制了一个背景图,然后在背景图上写了一行文字,拖动窗口,当窗口刷新时,文字消失了,请问如何让文字一直保持显示。代码如下:
CDC dcMem;
CClientDC dc(this);
CDSBackgroundBMP *pBMP;
HANDLE oldHBITMAP; dcMem.CreateCompatibleDC(&dc); pBMP = m_arrBackgroundBMP.GetAt(i);
dcMem.SelectObject(pBMP->m_hBMP);
GetDC()->BitBlt(0, 
                         nVerOffset, 
                         pBMP->m_nBMPWidth, 
       pBMP->m_nBMPHeight, 
       &dcMem, 
       0, 
       0, 
       SRCCOPY);   // 绘制背景图
CPaintDC dca(this); // device context for painting
dca.SetBkMode(TRANSPARENT);
dca.TextOut(0,50,"BBBBBBBBBBBBBB"); // 显示的文本

解决方案 »

  1.   

    CPaintDC dca(this); // device context for painting
    这一句应该用错了!!!
      

  2.   

    CPaintDC dca(this); // device context for painting
    这一句应该用错了!!!怎么错了?
      

  3.   

    CPaintDC 只能用在OnPaint()函数中
    CClientDC 用在OnPaint()以外的函数中
      

  4.   

    好乱的代码,那么多dc。应该除dcMem外只需要CPainDC dc(this);
    如:dc.BitBlt(...);
    另外你的nVerOffset是垂直滚动条的位置吗?拉动滚动条文字当然不见了。
      

  5.   

    CPaintDC
    CClientDC
    本质上有什么区别!
      

  6.   

    你在OnPaint函数中写的文字只会在对话框创建时显示,一旦窗口刷新,文字就会消失,你必须在OnInitDialog()函数中写这段显示文字的代码。