Windows device context is the key GDI element that refers a physical device. Device contexts are used to draw to the physical device; screen, printer, etc,. MFC provides different wrapper classes; and each class is associated with Windows device context.
Through this article, we are going to discuss different MFC’s Device Context classes.
CDC class – The base class for the device context classes
CDC class is the base class for the C++ device context classes. It has the handle to the Windows device context and some useful methods & properties to manage the device context. It also has the methods to draw on device contexts.
MFC provides different device context classes;
CMetaFileDC; which are derived from
CDC class. Each class’s constructor and destructor calls appropriate functions to deal with the device contexts; which makes programmer’s job bit easy.
These device context classes we use, depending on our need in the Program. We go through each of these classes, one by one.
This class is used to draw in client area of the Application window. It has the device context, which maps to the client area of the window; allowed to draw within the client area of the window, not outside of it.
The class constructor, calls
GetDC() method to holds the device context and the destructor calls
ReleaseDC() method to release the device context.
We use this class, to draw anywhere on Application window; on menu bar or window’s title bar or on the border etc,. This class has the device context which maps to the entire area of the window.
Very often we use this class to customize the look of the non-client area of the window; like windows with rounded corners, custom-drawn title bars, etc,. Usually we use
OnNcPaint() message handler, in response to
WM_NCPAINT message, to paint non-client area of the Application window.
Object construction time, it calls
GetWindowDC() method and once painting is done, it calls
ReleaseDC() method through it’s destructor.
We should use this class in
OnPaint() message handler only, in response to
WM_PAINT messages, to draw on the window’s device context. The device context maps to the client area of the window.
WM_PAINT is an important message. Each Windows based application has to handle this message when Windows sends the message to the application windows to re-draw, when required.
This class constructor calls
::BeginPaint function to holds the device context; once painting is done, it release the device context through
::EndPaint function, when destructor is called .
Windows Meta file is an image file format; stores list of commands to be issued to draw on Windows GDI (Graphics Device Interface); whether the drawing is a vector graphics or an image, etc,.
This class implements Windows meta-file and we can use the commands stored in Meta file to replay to create the drawing.