Collapse the table of content
Expand the table of content



Creates a memory device context that is compatible with the device specified by pDC.

BOOL CreateCompatibleDC(   CDC* pDC);


A pointer to a device context. If pDC is NULL, the function creates a memory device context that is compatible with the system display.

Nonzero if the function is successful; otherwise 0.

A memory device context is a block of memory that represents a display surface. It can be used to prepare images in memory before copying them to the actual device surface of the compatible device.

When a memory device context is created, GDI automatically selects a 1-by-1 monochrome stock bitmap for it. GDI output functions can be used with a memory device context only if a bitmap has been created and selected into that context.

This function can only be used to create compatible device contexts for devices that support raster operations. See the CDC::BitBlt member function for information regarding bit-block transfers between device contexts. To determine whether a device context supports raster operations, see the RC_BITBLT raster capability in the member function CDC::GetDeviceCaps.

// 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;

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

      // 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;
      int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
      int nY = + (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);

      TRACE0("ERROR: Where's IDB_BITMAP1?\n");


Header: afxwin.h

© 2015 Microsoft