Freigeben über


CDC::CreateCompatibleDC

Erstellt einen Speichergerätekontext, der mit dem Gerät kompatibel ist, das durch pDC angegeben wird.

BOOL CreateCompatibleDC( 
   CDC* pDC  
);

Parameter

  • pDC
    Ein Zeiger auf einem Gerätekontext. Wenn pDCNULL ist, erstellt die Funktion einen Speichergerätekontext, der mit der Systemanzeige kompatibel ist.

Rückgabewert

Ungleich 0 (null), wenn die Funktion erfolgreich; 0 andernfalls.

Hinweise

Ein Speichergerätekontext ist ein Speicherblock, der eine Anzeigeoberfläche darstellt. Er kann verwendet werden, um Bilder in den Arbeitsspeicher vorzubereiten, bevor sie auf die Oberfläche des aktuellen Gerätes des Geräts kompatiblen kopiert.

Wenn ein Speichergerätekontext erstellt wird, wählt GDI automatisch eine 1 Vorratbitmap des Monochroms by-1 für es aus. GDI-Ausgabefunktionen können mit einem Speichergerätekontext nur verwendet werden, wenn eine Bitmap in diesen Kontext erstellt und ausgewählt wurde.

Diese Funktion kann nur verwendet werden, um kompatible Gerätekontexte für Geräte zu erstellen, die Rastervorgänge unterstützen. Siehe die CDC::BitBlt-Memberfunktion zu Informationen über Bitblocktransfers zwischen Gerätekontexten. Um nach gewünschtem ein Gerätekontext Rastervorgänge unterstützt, finden Sie die RC_BITBLT Rasterfunktion in der Memberfunktion CDC::GetDeviceCaps.

Beispiel

// 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");
   }
}

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CDC-Klasse

Hierarchiediagramm

CDC::CDC

CDC::GetDeviceCaps

CreateCompatibleDC

CDC::BitBlt

CDC::CreateDC

CDC::CreateIC

CDC::DeleteDC