GetDCEx (user32)
Last changed: -84.13.75.196

.
Summary

C# Signature:

  [DllImport("user32.dll")]
static extern IntPtr GetDCEx(IntPtr hWnd, IntPtr hrgnClip, DeviceContextValues flags);

User-Defined Types:

/// <summary>Values to pass to the GetDCEx method.</summary>
[Flags()]
protected enum DeviceContextValues : uint
{
    /// <summary>DCX_WINDOW: Returns a DC that corresponds to the window rectangle rather
    /// than the client rectangle.</summary>
    Window       = 0x00000001,
    /// <summary>DCX_CACHE: Returns a DC from the cache, rather than the OWNDC or CLASSDC
    /// window. Essentially overrides CS_OWNDC and CS_CLASSDC.</summary>
    Cache        = 0x00000002,
    /// <summary>DCX_NORESETATTRS: Does not reset the attributes of this DC to the
    /// default attributes when this DC is released.</summary>
    NoResetAttrs     = 0x00000004,
    /// <summary>DCX_CLIPCHILDREN: Excludes the visible regions of all child windows
    /// below the window identified by hWnd.</summary>
    ClipChildren     = 0x00000008,
    /// <summary>DCX_CLIPSIBLINGS: Excludes the visible regions of all sibling windows
    /// above the window identified by hWnd.</summary>
    ClipSiblings     = 0x00000010,
    /// <summary>DCX_PARENTCLIP: Uses the visible region of the parent window. The
    /// parent's WS_CLIPCHILDREN and CS_PARENTDC style bits are ignored. The origin is
    /// set to the upper-left corner of the window identified by hWnd.</summary>
    ParentClip       = 0x00000020,
    /// <summary>DCX_EXCLUDERGN: The clipping region identified by hrgnClip is excluded
    /// from the visible region of the returned DC.</summary>
    ExcludeRgn       = 0x00000040,
    /// <summary>DCX_INTERSECTRGN: The clipping region identified by hrgnClip is
    /// intersected with the visible region of the returned DC.</summary>
    IntersectRgn     = 0x00000080,
    /// <summary>DCX_EXCLUDEUPDATE: Unknown...Undocumented</summary>
    ExcludeUpdate    = 0x00000100,
    /// <summary>DCX_INTERSECTUPDATE: Unknown...Undocumented</summary>
    IntersectUpdate  = 0x00000200,
    /// <summary>DCX_LOCKWINDOWUPDATE: Allows drawing even if there is a LockWindowUpdate
    /// call in effect that would otherwise exclude this window. Used for drawing during
    /// tracking.</summary>
    LockWindowUpdate = 0x00000400,
    /// <summary>DCX_VALIDATE When specified with DCX_INTERSECTUPDATE, causes the DC to
    /// be completely validated. Using this function with both DCX_INTERSECTUPDATE and
    /// DCX_VALIDATE is identical to using the BeginPaint function.</summary>
    Validate     = 0x00200000,
}

Notes:

Retrieves a handle to a display device context (DC) for the client area of a specified window or for the entire screen.

You can use the returned handle in subsequent GDI functions to draw in the DC.

This function is an extension to the GetDC function, which gives an application more control over how and whether clipping occurs in the client area.

Unless the display DC belongs to a window class, the ReleaseDC function must be called to release the DC after painting. Also, ReleaseDC must be called from the same thread that called GetDCEx. The number of DCs is limited only by available memory.

<param name="hWnd">

Handle to the window whose DC is to be retrieved. If this value is NULL, GetDCEx retrieves the DC for the entire screen.</param>

<param name="hrgnClip">

Specifies a clipping region that may be combined with the visible region of the DC. If the value of flags is DCX_INTERSECTRGN or DCX_EXCLUDERGN, then the operating system assumes ownership of the region and will automatically delete it when it is no longer needed. In this case, applications should not use the region—not even delete it—after a successful call to GetDCEx.</param>

<param name="flags">

Specifies how the DC is created. This parameter can be one or more of the DeviceContextValues enumeration.</param>

If the function succeeds, the return value is the handle to the DC for the specified window.If the function fails, the return value is NULL.</para>

An invalid value for the hWnd parameter will cause the function to fail.

Windows NT/2000/XP: To get extended error information, call GetLastError.

Unless the display DC belongs to a window class, the ReleaseDC function must be called to release the DC after painting. Also, ReleaseDC must be called from the same thread that called GetDCEx. The number of "DCs" is limited only by available memory.

Tips & Tricks:

Please add some!

Sample Code:

Please add some!

Alternative Managed API:

Do you know one? Please contribute it!

Documentation
GetDCEx on MSDN