Функция 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 |