PRB: Memory DC Produces Monochrome Images

Article translations Article translations
Article ID: 139165 - View products that this article applies to.
This article was previously published under Q139165
This article has been archived. It is offered "as is" and will no longer be updated.
Expand all | Collapse all

SYMPTOMS

When you create and use a memory Device Context (DC) to draw and store GDI images, the bitmap displayed when transferred from the memory device context to the physical display is monochrome. All colors are converted to either black or white.

CAUSE

When creating a compatible bitmap for the memory DC, the handle to the memory DC is used as the first parameter to the call to CreateCompatibleBitmap(). This create a monochrome bitmap because a memory DC created with CreateCompatibleDC() is given a 1x1 monochrome bitmap as its default bitmap.

For example, the following code creates a monochrome bitmap and selects it into a memory DC:
   HDC hdc, hdcMem;
   HBITMAP hBitmap;

   hdc = GetDC(hWnd);
   hdcMem = CreateCompatibleDC(hdc);
   hBitmap = CreateCompatibleBitmap(hdcMem, 400, 400);
   SelectObject(hdcMem, hBitmap);
   SetTextColor(hdcMem, RGB(0, 0, 255));
				

RESOLUTION

Send a physical screen DC to the CreateCompatibleBitmap() function rather than the memory DC that you plan on selecting the bitmap into.

The following example code properly sets up a color memory DC with a color bitmap with the same bit depth as the physical display:
   HDC hdc, hdcMem;
   HBITMAP hBitmap;

   hdc = GetDC(hWnd);
   hdcMem = CreateCompatibleDC(hdc);
   hBitmap = CreateCompatibleBitmap(hdc, 400, 400);
   SelectObject(hdcMem, hBitmap);
   SetTextColor(hdcMem, RGB(0, 0, 255));
				

STATUS

This behavior is by design.

Properties

Article ID: 139165 - Last Review: February 24, 2014 - Revision: 2.1
APPLIES TO
  • Microsoft Windows Software Development Kit 3.1, when used with:
    • Microsoft Windows 3.11 Standard Edition
  • Microsoft Win32 Application Programming Interface
Keywords: 
kbnosurvey kbarchive kbprb kbcode KB139165

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com