Condividi tramite


Funzione EngCreateWnd (winddi.h)

La funzione EngCreateWnd crea una struttura WNDOBJ per la finestra a cui fa riferimento hwnd.

Sintassi

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

Parametri

pso

Puntatore a una struttura SURFOBJ che identifica una superficie del dispositivo.

hwnd

Gestire la finestra creata dalla chiamata di un'applicazione alla funzione CreateWindow win32 o equivalente.

pfn

fl

Maschera di bit che specifica il tipo di modifiche che GDI deve tenere traccia e segnalare al driver. Questo valore deve essere coerente tramite tutte le richieste WNDOBJ effettuate dal driver. Questo parametro può essere uno o più dei valori di campo di bit seguenti:

Contrassegno Significato
WO_DRAW_NOTIFY GDI deve fornire al driver notifiche di WOC_DRAWN.
WO_RGN_CLIENT GDI deve tenere traccia delle modifiche nell'area client dell'oggetto finestra e notificare al driver quando cambia l'area client visibile della finestra. L'area enumerata nella funzione di callback è la nuova area client visibile della finestra.
WO_RGN_CLIENT_DELTA GDI deve tenere traccia delle modifiche nell'area client delta dell'oggetto finestra e notificare al driver quando cambia l'area visibile della finestra. L'area enumerata nella funzione di callback è un'area delta nonempty che si trova nella nuova area ma non nell'area precedente. L'area delta è valida solo durante il callback.
WO_RGN_DESKTOP_COORD GDI crea una struttura WNDOBJ con coordinate desktop quando il sistema esegue più monitor.

GDI ignora questo flag e crea una struttura WNDOBJ con coordinate del dispositivo quando il sistema esegue un singolo monitor.

WO_RGN_SURFACE GDI deve tenere traccia delle modifiche nell'area di superficie dell'oggetto finestra e notificare al driver quando cambia l'area della superficie. L'area della superficie di attacco è la superficie di visualizzazione, escluse tutte le aree client visibili delle finestre rilevate dal driver.
WO_RGN_SURFACE_DELTA GDI deve tenere traccia delle modifiche nell'area della superficie differenziale dell'oggetto finestra e notificare al driver quando l'area di superficie cambia. L'area enumerata nella funzione di callback è un'area delta nonempty che si trova nella nuova area di superficie ma non nell'area di superficie precedente. L'area della superficie differenziale è valida solo durante il callback.
WO_RGN_UPDATE_ALL GDI deve inviare una notifica al driver per tutte le finestre che tiene traccia della modifica delle aree visibili delle finestre. Questo flag deve essere usato insieme al flag WO_RGN_CLIENT.
WO_RGN_WINDOW GDI deve tenere traccia delle modifiche nell'intera area dell'oggetto finestra (che include l'area client della finestra) e notificare al driver quando cambia l'area della finestra.
WO_SPRITE_NOTIFY GDI deve notificare al driver per tutte le finestre che tiene traccia quando una delle aree visibili delle finestre è sovrapposta o non si sovrappone più a sprite.

iPixelFormat

Specifica il formato pixel associato all'oggetto finestra. Il formato pixel di un oggetto finestra è fisso. Questo parametro può essere zero se non è presente alcun formato pixel associato.

Valore restituito

Il valore restituito è un puntatore a una struttura WNDOBJ se la funzione ha esito positivo. In caso contrario, il valore restituito è −1 se la stessa finestra viene rilevata dal driver oppure zero se il driver non tiene traccia della stessa finestra.

Commenti

Poiché la creazione di un oggetto finestra comporta il blocco delle risorse della finestra, EngCreateWnd deve essere chiamato solo nel contesto dell'escape WNDOBJ_SETUP in DrvEscape.

EngCreateWnd supporta il rilevamento delle finestre da più driver, in cui ogni driver viene identificato da un puntatore di funzione WNDOBJCHANGEPROC univoco identificato da pfn. Ad esempio, un driver video live può tenere traccia delle modifiche apportate alle finestre video live mentre un driver OpenGL tiene traccia delle modifiche apportate alle finestre OpenGL.

GDI chiamerà WNDOBJCHANGEPROC con lo stato della finestra più recente se viene creato un nuovo WNDOBJ da DrvEscape. GDI informerà anche WNDOBJCHANGEPROC quando una finestra descritta da una struttura WNDOBJ viene eliminata definitivamente.

Le notifiche WOC_SPRITE_OVERLAP e WOC_SPRITE_NO_OVERLAP passate a WNDOBJCHANGEPROC consentono al driver di essere informati in modo sincrono quando uno sprite si trova sopra la finestra e intraprendere l'azione appropriata. Il driver riceve queste notifiche anche se tutti gli sprite sono stati abbattuti dal flag ECS_TEARDOWN di EngControlSprites.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows 2000 e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Universale
Intestazione winddi.h (include Winddi.h)
Libreria Win32k.lib
DLL Win32k.sys

Vedi anche

DrvEscape

WNDOBJ

WNDOBJCHANGEPROC