Partager via


CDC::CreateCompatibleDC

Crée un contexte de périphérique qui est compatible avec l'appareil spécifié par pDC.

BOOL CreateCompatibleDC(
   CDC* pDC 
);

Paramètres

  • pDC
    Un pointeur vers un contexte de périphérique.Si pDC est NULL, la fonction crée un contexte de périphérique qui est compatible avec l'affichage du système.

Valeur de retour

Une valeur différente de zéro si la fonction est réussie ; sinon 0.

Notes

Un contexte de périphérique est un bloc de mémoire qui représente une surface d'affichage.Il peut être utilisé pour préparations image dans la mémoire avant de les copier à la surface du périphérique réel du périphérique compatible.

Lorsqu'un contexte de périphérique est créé, GDI sélectionne automatiquement une bitmap 1 d'actions du noir et blanc by-1 pour celui-ci.Les fonctions de sortie à GDI peuvent être utilisées avec un contexte de périphérique uniquement si une bitmap créée et sélectionnée dans ce contexte.

Cette fonction peut être utilisée pour créer des contextes compatibles de l'appareil pour les appareils qui ne prennent pas en charge les opérations rasters.Consultez la fonction membre de CDC::BitBlt pour plus d'informations concernant les assignations par bloc de bits entre les contextes de périphérique.Pour déterminer si un contexte de périphérique prend en charge les opérations rasters, consultez la capacité de fr. de RC_BITBLT dans la fonction membre CDC::GetDeviceCaps.

Exemple

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

Configuration requise

Header: afxwin.h

Voir aussi

Référence

CDC, classe

Graphique de la hiérarchie

CDC::CDC

CDC::GetDeviceCaps

CreateCompatibleDC

CDC::BitBlt

CDC::CreateDC

CDC::CreateIC

CDC::DeleteDC