Fonction EngCreateWnd (winddi.h)
La fonction EngCreateWnd crée une structure WNDOBJ pour la fenêtre référencée par hwnd.
Syntaxe
ENGAPI WNDOBJ * EngCreateWnd(
SURFOBJ *pso,
HWND hwnd,
WNDOBJCHANGEPROC pfn,
FLONG fl,
int iPixelFormat
);
Paramètres
pso
Pointeur vers une structure SURFOBJ identifiant une surface d’appareil.
hwnd
Gérez la fenêtre créée par l’appel d’une application à la fonction Win32 CreateWindow ou équivalente.
pfn
fl
Masque de bits qui spécifie le type de modifications que GDI doit suivre et signaler au pilote. Cette valeur doit être cohérente dans toutes les requêtes WNDOBJ effectuées par le pilote. Ce paramètre peut être une ou plusieurs des valeurs de champ de bits suivantes :
Indicateur | Signification |
---|---|
WO_DRAW_NOTIFY | GDI doit fournir au pilote des notifications WOC_DRAWN. |
WO_RGN_CLIENT | GDI doit suivre les modifications apportées dans la région cliente de l’objet window et notifier le pilote lorsque la région cliente visible de la fenêtre change. La région énumérée dans la fonction de rappel est la nouvelle zone client visible de la fenêtre. |
WO_RGN_CLIENT_DELTA | GDI doit suivre les modifications apportées dans la région cliente delta de l’objet window et avertir le pilote lorsque la région visible de la fenêtre change. La région énumérée dans la fonction de rappel est une zone delta vide qui se trouve dans la nouvelle région, mais pas dans l’ancienne région. La région delta est valide pendant le rappel uniquement. |
WO_RGN_DESKTOP_COORD |
GDI crée une structure WNDOBJ avec des coordonnées de bureau lorsque le système exécute plusieurs moniteurs.
GDI ignore cet indicateur et crée une structure WNDOBJ avec des coordonnées d’appareil lorsque le système exécute un seul moniteur. |
WO_RGN_SURFACE | GDI doit suivre les modifications apportées à la zone de surface de l’objet window et notifier le pilote lorsque la région de surface change. La région de surface est la surface d’affichage à l’exclusion de toutes les régions clientes visibles des fenêtres suivies par le pilote. |
WO_RGN_SURFACE_DELTA | GDI doit suivre les modifications apportées à la zone delta surface de l’objet window et avertir le pilote lorsque la région de surface change. La région énumérée dans la fonction de rappel est une zone delta vide qui se trouve dans la nouvelle région de surface, mais pas dans l’ancienne région de surface. La région de surface delta est valide pendant le rappel uniquement. |
WO_RGN_UPDATE_ALL | GDI doit informer le pilote de toutes les fenêtres qu’il suit lorsque l’une des régions visibles de ses fenêtres change. Cet indicateur doit être utilisé conjointement avec l’indicateur WO_RGN_CLIENT. |
WO_RGN_WINDOW | GDI doit suivre les modifications dans l’ensemble de la région de l’objet window (qui inclut la région cliente de la fenêtre) et avertir le pilote lorsque la région de la fenêtre change. |
WO_SPRITE_NOTIFY | GDI doit informer le pilote de toutes les fenêtres qu’il suit lorsque l’une des régions visibles de ses fenêtres se chevauche ou ne se chevauche plus par des sprites. |
iPixelFormat
Spécifie le format de pixel associé à l’objet window. Le format de pixel d’un objet fenêtre est fixe. Ce paramètre peut être égal à zéro s’il n’existe aucun format de pixel associé.
Valeur retournée
La valeur de retour est un pointeur vers une structure WNDOBJ si la fonction réussit. Sinon, la valeur de retour est −1 si la même fenêtre est suivie par le pilote, ou zéro si le pilote ne suit pas la même fenêtre.
Remarques
Étant donné que la création d’un objet window implique le verrouillage des ressources de fenêtre, EngCreateWnd doit être appelé uniquement dans le contexte de l’échappement WNDOBJ_SETUP dans DrvEscape.
EngCreateWnd prend en charge le suivi des fenêtres par plusieurs pilotes, où chaque pilote est identifié par un pointeur de fonction WNDOBJCHANGEPROC unique identifié par pfn. Par exemple, un pilote vidéo en direct peut suivre les modifications apportées aux fenêtres vidéo en direct tandis qu’un pilote OpenGL effectue le suivi des modifications apportées aux fenêtres OpenGL.
GDI appelle WNDOBJCHANGEPROC avec l’état de fenêtre le plus récent si un nouveau WNDOBJ est créé par DrvEscape. GDI avertit également WNDOBJCHANGEPROC lorsqu’une fenêtre décrite par une structure WNDOBJ est détruite.
Les notifications WOC_SPRITE_OVERLAP et WOC_SPRITE_NO_OVERLAP transmises à WNDOBJCHANGEPROC permettent au pilote d’être informé de manière synchrone lorsqu’un sprite se trouve au-dessus de sa fenêtre et d’effectuer l’action appropriée. Le pilote reçoit ces notifications même si tous les sprites ont été détruits par l’indicateur ECS_TEARDOWN d’EngControlSprites.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Windows 2000 et versions ultérieures des systèmes d’exploitation Windows. |
Plateforme cible | Universal |
En-tête | winddi.h (inclure Winddi.h) |
Bibliothèque | Win32k.lib |
DLL | Win32k.sys |