CreateCompatibleBitmap (Compact 2013)


This function creates a bitmap compatible with the device associated with the specified device context.

HBITMAP CreateCompatibleBitmap(
  HDC hdc, 
  int nWidth, 
  int nHeight


[in] Handle to a device context.


[in] Specifies the bitmap width, in pixels.


[in] Specifies the bitmap height, in pixels.

A handle to the bitmap indicates success.

NULL indicates failure.

To get extended error information, call GetLastError.

The following code example shows how to create a memory device context, and how to use a CreateCompatibleBitmap to create a bitmap.

For readability, the following code example does not contain security checking or error handling. Do not use the following code in a production environment.

#include <winuser.h>

void DrawBitmap(HWND hwnd, int xStart, int yStart)
     HDC hDC,                  // Handle to the display device context 
     HDC hDCMem;               // Handle to the memory device context
     HBITMAP hBitmap;          // Handle to the new bitmap
     int iWidth, iHeight;      // Width and height of the bitmap

     // Retrieve the handle to a display device context for the client 
     // area of the window. 
     hDC = GetDC(hwnd);

     // Create a memory device context compatible with the device. 
     hDCMem = CreateCompatibleDC(hDC);

     // Retrieve the width and height of window display elements.
     iWidth = GetSystemMetrics(SM_CXSCREEN) / 10;
     iHeight = GetSystemMetrics(SM_CYSCREEN) / 10;

     // Create a bitmap compatible with the device associated with the 
      // device context.
     hBitmap = CreateCompatibleBitmap(hDC, iWidth, iHeight);

     // Use the bitmap.
     if (hDCMem != NULL)
          SelectObject(hDCMem, hBitmap);
          BitBlt(hDC, xStart, yStart, iWidth, iHeight, hDCMem, 0, 0, SRCCOPY);

     // Delete the bitmap object and free all resources associated with it. 

     // Delete the memory device context and the display device context.
     ReleaseDC(hwnd, hDC);

The color format of the bitmap created by the CreateCompatibleBitmap function matches the color format of the device identified by the hdc parameter. This bitmap can be selected into any memory device context that is compatible with the original device.

Because memory device contexts allow both color and monochrome bitmaps, the format of the bitmap returned by the CreateCompatibleBitmap function differs when the specified device context is a memory device context. However, a compatible bitmap that was created for a nonmemory device context always possesses the same color format and uses the same color palette as the specified device context.

If an application sets the nWidth or nHeight parameters to zero, CreateCompatibleBitmap returns the handle to a 1- by 1-pixel, monochrome bitmap.

If a DIB section, which is a bitmap created by the CreateDIBSection function, is selected into the device context identified by the hdc parameter, CreateCompatibleBitmap creates a DIB section.

When you no longer need the bitmap, call the DeleteObject function to delete it.