我在OnDraw函数中绘图,老是有问题,我建立2个缓冲区,一个是大缓冲区 m_MemDC所有的图片我先贴在这里,一个是小缓冲区copypDC用它为大缓冲区贴小图片,最后我将大缓冲区m_MemDC传给pDC.....不知道为什么屏幕不显示m_MemDC的内容...如我只用一个小缓冲直接传给pDC,一切正常.....兄弟们帮帮忙了 void CMapEditBy2003View::OnDraw(CDC* pDC)
{
CMapEditBy2003Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
/****************************************画背景****************************/
// 缓冲区DC
CDC* m_MemDC;
m_MemDC=new CDC;
CDC* copypDC;
copypDC=new CDC;
HBITMAP m_hTempBitmap;m_hTempBitmap=(HBITMAP)::LoadImage(NULL,pDoc->m_Map.m_BackGroud,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION|LR_DEFAULTSIZE);
    m_MemDC->CreateCompatibleDC(pDC);  //建立兼容dc
copypDC->CreateCompatibleDC(m_MemDC);copypDC->SelectObject(m_hTempBitmap);  //选取图片
for(int i=0;i<pDoc->m_Map.m_iHeight/32;i++)   //将图片存入缓冲区
    for ( int j=0;j<pDoc->m_Map.m_iWidth/32;j++)
     {
          m_MemDC->BitBlt(i*32,   j*32,   32,   32,   
                    copypDC,   0,   0,   SRCCOPY   );   
     }/******************************************************************/
    /**************************画选取的图片****************************/ copypDC->SelectObject(m_bitmap);  //选取特定的图片
m_MemDC->BitBlt( x,   y,   w,   h,   
            copypDC,   0,   0,   SRCCOPY   );   pDC->BitBlt(0,0,rect.right,rect.bottom,m_MemDC,0,0,SRCCOPY); delete(copypDC);
delete(m_MemDC);}