Поделиться через


Функция EngCreateWnd (winddi.h)

Функция EngCreateWnd создает структуру WNDOBJ для окна, на который ссылается hwnd.

Синтаксис

ENGAPI WNDOBJ * EngCreateWnd(
  SURFOBJ          *pso,
  HWND             hwnd,
  WNDOBJCHANGEPROC pfn,
  FLONG            fl,
  int              iPixelFormat
);

Параметры

pso

Указатель на структуру SURFOBJ , определяющую поверхность устройства.

hwnd

Обработка окна, созданного вызовом приложения к Win32 CreateWindow или эквивалентной функции.

pfn

fl

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

Flag Значение
WO_DRAW_NOTIFY GDI должен предоставлять драйверу WOC_DRAWN уведомления.
WO_RGN_CLIENT GDI должна отслеживать изменения в клиентской области объекта окна и уведомлять драйвер при изменении видимого клиентского региона окна. Регион, перечисляемый в функции обратного вызова, является новой видимой клиентской областью окна.
WO_RGN_CLIENT_DELTA GDI должна отслеживать изменения в разностной клиентской области объекта окна и уведомлять драйвер при изменении видимой области окна. Регион, перечисляемый в функции обратного вызова, является непустой разностной областью, которая находится в новом регионе, но не в старом. Разностная область действительна только во время обратного вызова.
WO_RGN_DESKTOP_COORD GDI создает структуру WNDOBJ с координатами рабочего стола, когда система работает с несколькими мониторами.

GDI игнорирует этот флаг и создает структуру WNDOBJ с координатами устройства, когда система работает под управлением одного монитора.

WO_RGN_SURFACE GDI должна отслеживать изменения в области поверхности объекта окна и уведомлять водителя о смене области поверхности. Область поверхности — это поверхность дисплея, за исключением всех видимых клиентских областей окон, отслеживаемых драйвером.
WO_RGN_SURFACE_DELTA GDI должен отслеживать изменения в области разностной поверхности объекта окна и уведомлять водителя при изменении области поверхности. Область, перечисленная в функции обратного вызова, является непустой областью дельта, которая находится в новой области поверхности, но не в старой. Область разностной поверхности допустима только во время обратного вызова.
WO_RGN_UPDATE_ALL GDI должна уведомлять драйвер обо всех окнах, которые он отслеживает, при изменении каких-либо видимых регионов окон. Этот флаг должен использоваться вместе с флагом WO_RGN_CLIENT.
WO_RGN_WINDOW GDI должна отслеживать изменения во всей области объекта окна (включая клиентскую область окна) и уведомлять драйвер при изменении региона окна.
WO_SPRITE_NOTIFY GDI должен уведомлять драйвер обо всех окнах, которые он отслеживает, когда какие-либо видимые области его окон перекрываются или больше не перекрываются спрайтами.

iPixelFormat

Задает формат пикселей, связанный с объектом окна. Формат пикселей объекта окна фиксирован. Этот параметр может быть равен нулю, если нет связанного формата пикселей.

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

Возвращаемое значение является указателем на структуру WNDOBJ , если функция выполнена успешно. В противном случае возвращаемое значение равно -1, если драйвер отслеживает одно и то же окно, или ноль, если драйвер отслеживает не одно и то же окно.

Комментарии

Так как создание объекта окна включает блокировку ресурсов окна, EngCreateWnd следует вызывать только в контексте WNDOBJ_SETUP escape-файла в DrvEscape.

EngCreateWnd поддерживает отслеживание окон несколькими драйверами, где каждый драйвер идентифицируется уникальным указателем функции WNDOBJCHANGEPROC , определяемым pfn. Например, драйвер видеотрансляции может отслеживать изменения окон видеотрансляции, а драйвер OpenGL отслеживает изменения в окнах OpenGL.

GDI вызывает WNDOBJCHANGEPROC с последним состоянием окна, если drvEscape создает новый WNDOBJ. GDI также уведомляет WNDOBJCHANGEPROC при уничтожении окна, описанного структурой WNDOBJ.

Уведомления WOC_SPRITE_OVERLAP и WOC_SPRITE_NO_OVERLAP, передаваемые в WNDOBJCHANGEPROC , позволяют драйверу синхронно информироваться о том, что спрайт находится поверх окна, и выполнять соответствующие действия. Драйвер получает эти уведомления, даже если все спрайты были удалены флагом ECS_TEARDOWN EngControlSprites.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 2000 и более поздних версиях операционных систем Windows.
Целевая платформа Универсальное
Верхняя часть winddi.h (включая Winddi.h)
Библиотека Win32k.lib
DLL Win32k.sys

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

DrvEscape

WNDOBJ

WNDOBJCHANGEPROC