A device context is a Windows data structure containing information about the drawing attributes of a device such as a display or a printer. All drawing calls are made through a device-context object, which encapsulates the Windows APIs for drawing lines, shapes, and text. Device contexts allow device-independent drawing in Windows. Device contexts can be used to draw to the screen, to the printer, or to a metafile.
CPaintDC objects encapsulate the common idiom of Windows, calling the
BeginPaint function, then drawing in the device context, then calling the
EndPaint function. The
CPaintDC constructor calls
BeginPaint for you, and the destructor calls
EndPaint. The simplified process is to create the CDC object, draw, and then destroy the
CDC object. In the framework, much of even this process is automated. In particular, your
OnDraw function is passed a
CPaintDC already prepared (via
OnPrepareDC), and you simply draw into it. It is destroyed by the framework and the underlying device context is released to Windows upon return from the call to your
CClientDC objects encapsulate working with a device context that represents only the client area of a window. The
CClientDC constructor calls the
GetDC function, and the destructor calls the
ReleaseDC function. CWindowDC objects encapsulate a device context that represents the whole window, including its frame.
Most drawing in a framework program — and thus most device-context work — is done in the view's
OnDraw member function. However, you can still use device-context objects for other purposes. For example, to provide tracking feedback for mouse movement in a view, you need to draw directly into the view without waiting for
OnDraw to be called.
In such a case, you can use a CClientDC device-context object to draw directly into the view.
What do you want to know more about