mfc_DB - 8BitsCoding/RobotMentor GitHub Wiki

void CDCDraw::DoubleBuffering(void)
{
    CWnd* pWnd = NULL;
    pWnd = GetDlgItem(IDC_ST_PICTURE);
    CDC *pDCc = pWnd->GetDC();
 
    CRect rect;
    pWnd->GetClientRect(&rect);
 
    // memDC에 그릴정보를 임시로 저장함.
    CDC memDC;
    CBitmap *pOldBitmap, bitmap;
 
    memDC.CreateCompatibleDC(pDCc);
    bitmap.CreateCompatibleBitmap(pDCc, rect.right, rect.bottom);
    pOldBitmap = memDC.SelectObject(&bitmap);
 
    CPen *pOldPen = NULL;
    CBrush *pOldBrush = NULL;
 
    CPen penWhite(PS_SOLID, 1, RGB(255, 255, 255));
    CBrush brushWhite(RGB(255, 255, 255));
 
    pOldPen = memDC.SelectObject(&penWhite);
    pOldBrush = memDC.SelectObject(&brushWhite);
 
    memDC.Rectangle(0, 0, rect.right, rect.bottom);
 
    memDC.SelectObject(pOldPen);
    memDC.SelectObject(pOldBrush);
 
    pDCc->BitBlt(0, 0, rect.right, rect.bottom, &memDC, 0, 0, SRCCOPY);
 
    memDC.SelectObject(pOldBitmap);
 
    bitmap.DeleteObject();
    memDC.DeleteDC();
 
    pWnd->ReleaseDC(pDCc);
}

참고사이트