下面是我加载一个位图的代码:     CDC Dc;
     if(Dc.CreateCompatibleDC(pDC)==FALSE)
        AfxMessageBox("Can't create DC"); 
     Dc.SelectObject(bitmap);
     pDC->BitBlt(250,30,400,400,&Dc,0,0,SRCCOPY);当我删除代码:
if(Dc.CreateCompatibleDC(pDC)==FALSE)
        AfxMessageBox("Can't create DC"); 
结果就不能加载位图,我想问下这行代码有什么作用?

解决方案 »

  1.   

    Dc.CreateCompatibleDC(pDC)
    ==============
    这个是创建一个与pDC相兼容的DC,这个是不能删除的,CDC对象建立时,内部的HDC对象并没有建立,必须要用这个函数创建一个和实际DC相兼容的DC才能工作。
    对于内存DC,在工作之前必须要用CreateCompatibleDC创建一个与实际设备DC相兼容的DC才能工作。
      

  2.   

    楼上正解楼主这样理解,你建个新的对象,总要初始化一下吧,CreateCompatibleDC(pDC)就是初始化,另外
    CreateCompatibleDC(NULL)效果相同。
      

  3.   

    CDC Dc;
    // 去掉了错误检查,楼主你看一下,也许清晰一点。
    Dc.CreateCompatibleDC(pDC); // 创建兼容DC
    Dc.SelectObject(bitmap);
    pDC->BitBlt(250,30,400,400,&Dc,0,0,SRCCOPY);