CRect rect;
    this->GetClientRect(&rect);
    // 指针
    pDC = this->GetDC();//屏幕绘图上下文设备的指针
    this->Invalidate(0);//是否擦除背景
    pDC->SetWindowOrg(m_nHScrollPos, m_nVScrollPos);//水平、垂直滚动条的位置
    //内存绘图
    CBitmap memBitmap;//定义一个位图对象
    CBitmap* pOldBmp = NULL;
    memDC.CreateCompatibleDC(pDC);//内存绘图设备建立与屏幕显示设备兼容的内存显示设备
    memBitmap.CreateCompatibleBitmap(pDC,rect.right,rect.bottom);//建立与建立与屏幕显示兼容的位图
    pOldBmp = memDC.SelectObject(&memBitmap);//将位图对象选入内存显示设备只有选入了位图的内存显示设备才有地方绘图,画到指定的位图
 
    memDC.BitBlt(rect.left,rect.top,rect.right,rect.bottom,pDC,0,0,SRCCOPY);
 
    DrawWave(&memDC);//绘图函数
 
    pDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,&memDC,0,0,SRCCOPY);//将内存中的图拷贝到屏幕上进行显示
 
    memDC.SelectObject(pOldBmp);
    memDC.DeleteDC();
    memBitmap.DeleteObject();
这是我在OnPaint()中实现的拷贝图形函数,图形可正常显示,为了解决拖动滚动条时图形闪烁我让OnEraseBKgnd()函数直接返回TRUE  这样做以后拖动不闪烁了,但是拖动时屏幕下面显示的图形重叠,不知该如何解决