1.CreateCompatibleDC 
The CreateCompatibleDC function creates a memory device context (DC) compatible with the specified device. 
2.
HDC hdc = CreateCompatibleDC(dc);
SelectObject(hdc,bitmap);
....
BitBlt(...)

解决方案 »

  1.   

    ::GetwindowRect(hwnd,&Rect);bitmap.GrectecompatibleBitmap(&dc,rect.Width(),rect.Height());oldbitmap=memdc.selectObject(&bitmap);memdc.BitBlt(0,0,rect.Width(),rect.Height(),&dc,rect,left,rect,top,SRCCOPY);dc.BitBlt(512+rect,left,rect,top,rect.Width(),rect.Height(),&memdc,0,0,SRCCOPY);memdc.selectObject(oldBitmap);
    bitmap.DeleteObject();
    memdc.Deletedc();
    哪里有错啊
      

  2.   

    啊 怎么没有分 啊 
    首先给出实现的程序,然后再解释,同样是在OnDraw(CDC   *pDC)中:   
        
        CDC   MemDC;   //首先定义一个显示设备对象   
        CBitmap   MemBitmap;//定义一个位图对象   
        
        //随后建立与屏幕显示兼容的内存显示设备   
        MemDC.CreateCompatibleDC(NULL);   
        //这时还不能绘图,因为没有地方画   ^_^   
        //下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小   
        MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);   
            
        //将位图选入到内存显示设备中   
        //只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上   
        CBitmap   *pOldBit=MemDC.SelectObject(&MemBitmap);   
        
        //先用背景色将位图清除干净,这里我用的是白色作为背景   
        //你也可以用自己应该用的颜色   
        MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));   
        
        //绘图   
        MemDC.MoveTo(……);   
        MemDC.LineTo(……);   
          
        //将内存中的图拷贝到屏幕上进行显示   
        pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);   
        
        //绘图完成后的清理   
        MemBitmap.DeleteObject();   
        MemDC.DeleteDC();   
        
      上面的注释应该很详尽了,废话就不多说了。