Функция GetDCEx (winuser.h)

Функция GetDCEx извлекает дескриптор в контекст устройства (DC) для клиентской области указанного окна или для всего экрана. Возвращаемый дескриптор можно использовать в последующих функциях GDI для рисования в контроллере домена. Контекст устройства — это непрозрачная структура данных, значения которой используются внутри GDI.

Эта функция является расширением функции GetDC , которая дает приложению более полный контроль над тем, как и происходит ли обрезка в клиентской области.

Синтаксис

HDC GetDCEx(
  [in] HWND  hWnd,
  [in] HRGN  hrgnClip,
  [in] DWORD flags
);

Параметры

[in] hWnd

Дескриптор для окна, контроллер домена которого требуется извлечь. Если это значение равно NULL, GetDCEx извлекает контроллер домена для всего экрана.

[in] hrgnClip

Отсеченная область, которая может быть объединена с видимой областью контроллера домена. Если значение флагов равно DCX_INTERSECTRGN или DCX_EXCLUDERGN, операционная система принимает на себя владение регионом и автоматически удаляет его, когда он больше не нужен. В этом случае приложение не должно использовать или удалять регион после успешного вызова GetDCEx.

[in] flags

Указывает способ создания контроллера домена. Этот параметр может иметь одно или несколько из следующих значений.

Значение Значение
DCX_WINDOW
Возвращает контроллер домена, соответствующий прямоугольнику окна, а не клиентскому прямоугольнику.
DCX_CACHE
Возвращает контроллер домена из кэша, а не из окна OWNDC или CLASSDC. По сути, переопределяет CS_OWNDC и CS_CLASSDC.
DCX_PARENTCLIP
Использует видимую область родительского окна. Биты WS_CLIPCHILDREN родительского элемента и CS_PARENTDC стиля игнорируются. В качестве источника задается левый верхний угол окна, определяемый hWnd.
DCX_CLIPSIBLINGS
Исключает видимые области всех одноуровневых окон над окном, определяемым hWnd.
DCX_CLIPCHILDREN
Исключает видимые области всех дочерних окон под окном, определенным hWnd.
DCX_NORESETATTRS
Этот флаг отклонен.
DCX_LOCKWINDOWUPDATE
Позволяет выполнять рисование, даже если действует вызов LockWindowUpdate , который в противном случае исключил бы это окно. Используется для рисования во время отслеживания.
DCX_EXCLUDERGN
Область обрезки, определяемая hrgnClip , исключается из видимой области возвращаемого контроллера домена.
DCX_INTERSECTRGN
Область обрезки, определяемая hrgnClip , пересекается с видимой областью возвращаемого контроллера домена.
DCX_INTERSECTUPDATE
Защищены; не использовать.
DCX_VALIDATE
Защищены; не использовать.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение является дескриптором контроллера домена для указанного окна.

Если функция завершается сбоем, возвращается значение NULL. Недопустимое значение параметра hWnd приведет к сбою функции.

Комментарии

Если контроллер домена дисплея не принадлежит классу окна, необходимо вызвать функцию ReleaseDC , чтобы освободить контроллер домена после рисования. Кроме того, ReleaseDC должен вызываться из того же потока, что и GetDCEx. Количество контроллеров домена ограничено только доступной памятью.

Функция возвращает дескриптор контроллеру домена, который принадлежит классу окна, если CS_CLASSDC, CS_OWNDC или CS_PARENTDC был указан в качестве стиля в структуре WNDCLASS при регистрации класса.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll

См. также раздел

BeginPaint

Функции контекста устройства

Общие сведения о контекстах устройств

GetWindowDC

ReleaseDC

WNDCLASS