想在内存dc中全部做完图后显示,但是显示不出,用dc直接作图可以,不知为什么?代码如下(在对话框OnPaint中):
CDC memDC; //作图的内存DC
CBrush brBS;
CBrush* pTempBrush=NULL;
CRect rectBack; //控件边框 rectBack.top=0;
rectBack.left=0;
rectBack.bottom=200;
rectBack.right=800; memDC.CreateCompatibleDC(&dc); brBS.CreateSolidBrush(RGB(255,0,0));
pTempBrush = (CBrush*)memDC.SelectObject(&brBS);
memDC.FillRect(rectBack,&brBS);
memDC.SelectObject(pTempBrush);
brBS.DeleteObject(); dc.BitBlt(0,0,rectBack.right,rectBack.bottom,&memDC,0,0,SRCCOPY); memDC.DeleteDC();

解决方案 »

  1.   

    CDC memDC; //作图的内存DC
    CBrush brBS;
    CBrush* pTempBrush=NULL;
    CRect rectBack; //控件边框rectBack.top=0;
    rectBack.left=0;
    rectBack.bottom=200;
    rectBack.right=800;memDC.CreateCompatibleDC(&dc);
    //must create and select a bitmap in memdc
    CBitmap Bitmap;
    Bitmap.CreateCompatibleBitmap(&dc,rectBack.Width(),rectBack.Height());
    CBitmap *pOldBitmap = (CBitmap *)memDC.SelecctObject(&Bitmap);brBS.CreateSolidBrush(RGB(255,0,0));
    pTempBrush = (CBrush*)memDC.SelectObject(&brBS);
    memDC.FillRect(rectBack,&brBS);
    memDC.SelectObject(pTempBrush);
    brBS.DeleteObject();dc.BitBlt(0,0,rectBack.right,rectBack.bottom,&memDC,0,0,SRCCOPY);
    memDC.SelectObject(pOldBitmap);
    memDC.DeleteDC();
      

  2.   

    CDC memDC; //作?的?存DC
    CBrush brBS;
    CBrush* pTempBrush=NULL;
    CRect rectBack; //控件?框 CBitmap bmMem, *pOldBitmap; rectBack.top=0;
    rectBack.left=0;
    rectBack.bottom=200;
    rectBack.right=800; memDC.CreateCompatibleDC(&dc);
    bmMem.CreateCompatibleBitmap(&dc, rectBack.right, rectBack.bottom);
    pOldBitmap = memDC.SelectObject(&bmMem); brBS.CreateSolidBrush(RGB(255,0,0));
    pTempBrush = (CBrush*)memDC.SelectObject(&brBS);
    memDC.FillRect(rectBack,&brBS); dc.BitBlt(0,0,rectBack.right,rectBack.bottom,&memDC,0,0,SRCCOPY); memDC.SelectObject(pTempBrush);
    memDC.SelectObject(pOldBitmap); memDC.DeleteDC();