共用方式為


CDC::CreateCompatibleDC

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

BOOL CreateCompatibleDC( 
   CDC* pDC  
);

參數

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

傳回值

如果不是零,則函式成功,則為 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

請參閱

參考

CDC 類別

階層架構圖表

CDC::CDC

CDC::GetDeviceCaps

CreateCompatibleDC

CDC::BitBlt

CDC::CreateDC

CDC::CreateIC

CDC::DeleteDC