Función EngCreateWnd (winddi.h)
La función EngCreateWnd crea una estructura WNDOBJ para la ventana a la que hace referencia hwnd.
Sintaxis
ENGAPI WNDOBJ * EngCreateWnd(
SURFOBJ *pso,
HWND hwnd,
WNDOBJCHANGEPROC pfn,
FLONG fl,
int iPixelFormat
);
Parámetros
pso
Puntero a una estructura SURFOBJ que identifica una superficie de dispositivo.
hwnd
Controle la ventana creada por la llamada de una aplicación a la función Win32 CreateWindow o equivalente.
pfn
fl
Es una máscara de bits que especifica el tipo de cambios que GDI debe realizar un seguimiento y notificar al controlador. Este valor debe ser coherente a través de todas las solicitudes WNDOBJ realizadas por el controlador. Este parámetro puede ser uno o varios de los siguientes valores de campo de bits:
Marca | Significado |
---|---|
WO_DRAW_NOTIFY | GDI debe proporcionar al controlador WOC_DRAWN notificaciones. |
WO_RGN_CLIENT | GDI debe realizar un seguimiento de los cambios en la región cliente del objeto de ventana y notificar al controlador cuándo cambia la región de cliente visible de la ventana. La región enumerada en la función de devolución de llamada es el nuevo área de cliente visible de la ventana. |
WO_RGN_CLIENT_DELTA | GDI debe realizar un seguimiento de los cambios en la región del cliente delta del objeto de ventana y notificar al controlador cuándo cambia la región visible de la ventana. La región enumerada en la función de devolución de llamada es un área delta no vacía que se encuentra en la nueva región, pero no en la región antigua. La región delta solo es válida durante la devolución de llamada. |
WO_RGN_DESKTOP_COORD |
GDI crea una estructura WNDOBJ con coordenadas de escritorio cuando el sistema ejecuta varios monitores.
GDI omite esta marca y crea una estructura WNDOBJ con coordenadas de dispositivo cuando el sistema ejecuta un solo monitor. |
WO_RGN_SURFACE | GDI debe realizar un seguimiento de los cambios en la región expuesta del objeto de ventana y notificar al controlador cuándo cambia la región de la superficie. La región expuesta es el área expuesta de visualización, excepto todas las regiones de cliente visibles de las ventanas a las que realiza el seguimiento el controlador. |
WO_RGN_SURFACE_DELTA | GDI debe realizar un seguimiento de los cambios en la región de la superficie delta del objeto de ventana y notificar al controlador cuándo cambia la región expuesta. La región enumerada en la función de devolución de llamada es un área delta no vacía que se encuentra en la nueva región expuesta, pero no en la región expuesta antigua. La región de la superficie delta solo es válida durante la devolución de llamada. |
WO_RGN_UPDATE_ALL | GDI debe notificar al controlador todas las ventanas que realiza el seguimiento cuando cambie cualquiera de sus regiones visibles. Esta marca debe usarse junto con la marca WO_RGN_CLIENT. |
WO_RGN_WINDOW | GDI debe realizar un seguimiento de los cambios en toda la región del objeto de ventana (que incluye la región cliente de la ventana) y notificar al controlador cuándo cambia la región de la ventana. |
WO_SPRITE_NOTIFY | GDI debe notificar al controlador todas las ventanas que realiza el seguimiento cuando cualquiera de sus regiones visibles se superpone o ya no se superpone por sprites. |
iPixelFormat
Especifica el formato de píxel asociado al objeto de ventana. El formato de píxel de un objeto de ventana es fijo. Este parámetro puede ser cero si no hay ningún formato de píxel asociado.
Valor devuelto
El valor devuelto es un puntero a una estructura WNDOBJ si la función es correcta. De lo contrario, el valor devuelto es −1 si el controlador realiza el seguimiento de la misma ventana o cero si el controlador no realiza el seguimiento de la misma ventana.
Comentarios
Dado que la creación de un objeto de ventana implica bloquear recursos de ventana, solo se debe llamar a EngCreateWnd en el contexto de la WNDOBJ_SETUP escape en DrvEscape.
EngCreateWnd admite el seguimiento de ventanas por varios controladores, donde cada controlador se identifica mediante un puntero de función WNDOBJCHANGEPROC único identificado por pfn. Por ejemplo, un controlador de vídeo en directo puede realizar un seguimiento de los cambios en las ventanas de vídeo en directo mientras un controlador OpenGL realiza el seguimiento de los cambios en las ventanas de OpenGL.
GDI llamará a WNDOBJCHANGEPROC con el estado de ventana más reciente si DrvEscape crea un nuevo WNDOBJ. GDI también notificará a WNDOBJCHANGEPROC cuando se destruye una ventana descrita por una estructura WNDOBJ.
Las notificaciones WOC_SPRITE_OVERLAP y WOC_SPRITE_NO_OVERLAP que se pasan a WNDOBJCHANGEPROC permiten que el controlador se informe sincrónicamente cuando un sprite está encima de su ventana y realice las acciones adecuadas. El controlador recibe estas notificaciones incluso si todas las sprites han sido destruidas por la marca ECS_TEARDOWN de EngControlSprites.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows 2000 y versiones posteriores de los sistemas operativos Windows. |
Plataforma de destino | Universal |
Encabezado | winddi.h (incluya Winddi.h) |
Library | Win32k.lib |
Archivo DLL | Win32k.sys |