若要檢視英文版的文章,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

CDC::CreateCompatibleDC

 

建立與指定的 pDC裝置相容的記憶體裝置內容。


      BOOL CreateCompatibleDC(
   CDC* pDC 
);

pDC

裝置內容的指標。如果 pDCNULL,函式會與系統顯示相容的記憶體裝置內容。

如果不是零,則函式成功,則為 0。

記憶體裝置內容是表示顯示介面的記憶體區塊。它可用來在複製之前準備在記憶體中的影像加入至相容裝置的實際裝置介面。

當記憶體裝置內容時,會建立 GDI 就會自動選取 1 x 1 純色股票點陣圖的。才會建立點陣圖並選取套用至內容, GDI 輸出功能可與記憶體裝置內容。

這個函式只能用來建立支援光柵作業的裝置相容的裝置內容。如需裝置內容,之間位元區塊傳輸的資訊 CDC::BitBlt 參閱成員函式。若要判斷裝置內容是否支援光柵作業,請在成員函式 CDC::GetDeviceCapsRC_BITBLT 光柵 (Raster) 功能。

// This handler loads a bitmap from system resources,
// centers it in the view, and uses BitBlt() to paint the bitmap
// bits.
void CDCView::DrawBitmap(CDC* pDC)
{
   // load IDB_BITMAP1 from our resources
   CBitmap bmp;
   if (bmp.LoadBitmap(IDB_BITMAP1))
   {
      // Get the size of the bitmap
      BITMAP bmpInfo;
      bmp.GetBitmap(&bmpInfo);

      // Create an in-memory DC compatible with the
      // display DC we're using to paint
      CDC dcMemory;
      dcMemory.CreateCompatibleDC(pDC);

      // Select the bitmap into the in-memory DC
      CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp);

      // Find a centerpoint for the bitmap in the client area
      CRect rect;
      GetClientRect(&rect);
      int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
      int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2;

      // Copy the bits from the in-memory DC into the on-
      // screen DC to actually do the painting. Use the centerpoint
      // we computed for the target offset.
      pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 
         0, 0, SRCCOPY);

      dcMemory.SelectObject(pOldBitmap);
   }
   else
   {
      TRACE0("ERROR: Where's IDB_BITMAP1?\n");
   }
}

需求

Header: afxwin.h

顯示: