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 |