请问CDC::CreateCompatibleDC的功能, 哪些情况下用到?

解决方案 »

  1.   

    回复人: kingcom_xu(刀是用来杀人的!) ( ) 信誉:105  2003-01-01 13:50:00  得分:0 
     
     
      一般在创建内存DC时用到...  
     
      

  2.   

    一个特例,显示位图
    //通过资源画图
    static void DrawBitmap(UINT bitmap,CDC *pDC,CRect rect)
    {
      CBitmap bmp;
      if (bmp.LoadBitmap(bitmap))
      {
      BITMAP bmpInfo;
          bmp.GetBitmap(&bmpInfo);
          CDC dcMemory;
          dcMemory.CreateCompatibleDC(pDC);
          dcMemory.SelectObject(&bmp);
      pDC->SetStretchBltMode(HALFTONE);
      pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcMemory,0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,SRCCOPY);
      }
    }//通过BMP文件画图
    static void drawBitmapFormFile(CString BitmapFilePath,CDC *pDC,CRect rect)
    {
    HANDLE filehandle=::LoadImage(NULL,BitmapFilePath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    if(filehandle!=NULL)
    {
    CBitmap bmp;
    if(bmp.Attach(filehandle))
    {
                 BITMAP bmpInfo;
                 bmp.GetBitmap(&bmpInfo);
                 CDC dcMemory;
                 dcMemory.CreateCompatibleDC(pDC);
                 dcMemory.SelectObject(&bmp);
                 pDC->SetStretchBltMode(HALFTONE);
                 pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcMemory,0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,SRCCOPY);
     bmp.Detach();
    }
    }
    }
      

  3.   

    是申请内存是用的了,
     例如:     
          CDC dcMemory;
          dcMemory.CreateCompatibleDC(pDC);
    位图的实现需要有内存(讲位图拷贝到内存)