我做一个画图程序,使用内存DC,原代码如下:(C*View的OnDraw(CDC* pDC)函数中)----- 但是运行后,整个View区域是黑色的?CDC dc;
CDC* pDrawDC = pDC;
CBitmap bitmap;
CBitmap* pOldBitmap;CRect rect;
GetClientRect(&rect);
//========================================================
if (dc.CreateCompatibleDC(pDC))
{
if (bitmap.CreateCompatibleBitmap(pDC,
                     rect.Width(), 
         rect.Height()))
{
OnPrepareDC(&dc,NULL);
pDrawDC = &dc;
pOldBitmap = dc.SelectObject(&bitmap);
}
}
//========================================================
pDoc->Draw(pDrawDC,ViewID);
pDrawDC->TextOut(1,1,*str);
dc.DPtoLP(&rect);
//========================================================
if ( pDrawDC != pDC )
{
pDC->BitBlt( 0, 0,rect.Width(), rect.Height(),
  &dc, 0, 0, SRCCOPY);
dc.SelectObject(pOldBitmap);
bitmap.DeleteObject();
}
各位帮忙给看看,是什么问题?

解决方案 »

  1.   

    用CreateCompatibleBitmap建立的是原始的位图,是黑白色的
    应该直接loadimage加载位图文件,然后
    selectobject 内存dc中就可以了
      

  2.   

    CreateCompatibleBitmap创建的位图默认是黑色的,在往上画之前,必须刷成你要的底色譬如白色。
      

  3.   

    楼上s说得对!
    用CreateCompatibleBitmap建立的是原始的位图,默认是黑白色的
      

  4.   

    原因是我在OnPrepareDC()中有SetMapMode(MM_TWIPS)语句;当我把这条语句注释掉后,就可以出正常结果了,为什么呢?