|
Private Display Device Contexts
A private DC enables an application to avoid retrieving and initializing a display DC each
time the application must draw in a window. Private DCs are useful for windows
that require many changes to the values of the attributes of the DC to prepare
it for drawing. Private DCs reduce the time required to prepare the DC and
therefore the time needed to carry out drawing in the window.
An application directs Windows to create a private DC for a window by
specifying the CS_OWNDC style in the window class. Windows creates a unique private DC
each time it creates a new window belonging to the class. Initially, the
private DC has the same default values for attributes as a common DC, but the
application can modify these at any time. Windows preserves changes to the DC for the
life of the window or until the application makes additional changes.
An application can retrieve the handle of the private DC by using the GetDC function any time after the window is created. The application must retrieve
the handle only once. Thereafter, it can keep and use the handle any number of
times. Because a private DC is not part of the display DC cache, an application
need never release the DC by using the ReleaseDC function.
Windows automatically adjusts the DC to reflect changes to the window, such as
moving or sizing. This ensures that any overlapping windows are always
properly clipped; that is, no action is required by the application to ensure
clipping. However, Windows does not revise the DC to include the update region.
Therefore, when processing a WM_PAINT message, the application must incorporate the update region either by calling BeginPaint or by retrieving the update region and intersecting it with the current
clipping region. If the application does not call BeginPaint, it must explicitly validate the update region by using the ValidateRect or ValidateRgn function. If the application does not validate the update region, the window
receives an endless series of WM_PAINT messages.
Because BeginPaint hides the caret if a window is showing it, an application that calls BeginPaint should also call the EndPaint function to restore the caret. EndPaint has no other effect on a private DC.
Although a private DC is convenient to use, it is expensive in terms of system
resources, requiring 800 or more bytes to store. Private DCs are recommended
when performance considerations outweigh storage costs.
Windows includes the private DC when sending the WM_ERASEBKGND message to the application. The current selections of the private DC,
including mapping mode, are in effect when the application or Windows processes these
messages. To avoid undesirable effects, Windows uses logical coordinates when
erasing the background; for example, it uses the GetClipBox function to retrieve the logical coordinates of the area to erase and passes
these coordinates to the FillRect function. Applications that process these messages can use similar
techniques. Windows supplies a window DC with the WM_ICONERASEBKGND message regardless of whether the corresponding window has a private DC.
An application can use the GetDCEx function to force Windows to return a common DC for the window that has a
private DC. This is useful for carrying out quick touch-ups to a window without
changing the current values of the attributes of the private DC.
| Last news from Greatis Software |
 |
|
Nostalgia .Net |
|
.Net is powerful, but not all-powerful, so sometimes we need to use Win32 API for our .Net applications. It's simple enough with Platform Invoke if you have Win32 skill, but we do not always have time to dig the ancient documentation, declare the special types that are compatible with Win32, find the values of the Win32's constants and so on. Nostalgia .Net offers several simple-to-use classes, and components that will allow you to forget about the headache of Win32 and just use the power of Win32 in your application the same way as you use the native. Net classes. More » |
| Recommended software for developers |
 |
|
Ultimate Pack |
|
Component pack for Delphi and C++ Builder that contains runtime form designer, runtime object inspector, print suite and much more for the very special price. More » |
 |
|
Form Designer .Net |
|
Unique runtime form design solution that allows to edit any form in .Net WinForms application at runtime with full source codes for only 300 euro! More » |
 |
|
Print Suite .Net |
|
Print Suite .Net is a set of components for easy printing texts, images and grids from your WinForms applications. Full C# source codes are available More » |
 |
|
Gradient Controls .Net |
|
Gradient Controls .Net offers controls with gradient background feature. Labels, panels and so on... Full C# source codes are available More » |
 |
|
Greatis iGrid |
|
iGrid plots drawing grid right over your desktop, so you can use it everywhere, with any drawing application without any special plugins for different graphic editors. More » |
All the contacts and projectsDmitry Vasiliev (just.dmitry)
Related LinksSoftware for Visual Studio .NET developers Software for Delphi and C++ Builder developers Software for Visual Basic 6 developers Delphi Tips&Tricks MegaDetailed.NET More Online Helps Win32 Programmer's Reference Win32 Multimedia Programmer's Reference OLE Programmer's Reference Microsoft Windows Pen API Programmer's Reference Microsoft Windows Sockets 2 Reference Microsoft Windows Telephony API (TAPI) Programmer's Reference Unix Manual Pages
|