EngCreateWnd-Funktion (winddi.h)
Die EngCreateWnd-Funktion erstellt eine WNDOBJ-Struktur für das Fenster, auf das von hwnd verwiesen wird.
Syntax
ENGAPI WNDOBJ * EngCreateWnd(
SURFOBJ *pso,
HWND hwnd,
WNDOBJCHANGEPROC pfn,
FLONG fl,
int iPixelFormat
);
Parameter
pso
Zeiger auf eine SURFOBJ-Struktur , die eine Geräteoberfläche identifiziert.
hwnd
Handle für das Fenster, das durch den Aufruf einer Anwendung der Win32 CreateWindow-Funktion oder einer entsprechenden Funktion erstellt wurde.
pfn
fl
Ist eine Bitmaske, die den Typ der Änderungen angibt, die GDI nachverfolgen und an den Treiber melden soll. Dieser Wert muss über alle WNDOBJ-Anforderungen des Treibers konsistent sein. Bei diesem Parameter kann es sich um einen oder mehrere der folgenden Bitfeldwerte handeln:
Flag | Bedeutung |
---|---|
WO_DRAW_NOTIFY | GDI sollte dem Treiber WOC_DRAWN Benachrichtigungen bereitstellen. |
WO_RGN_CLIENT | GDI sollte Änderungen in der Clientregion des Fensterobjekts nachverfolgen und den Treiber benachrichtigen, wenn sich die sichtbare Clientregion des Fensters ändert. Der bereich, der in der Rückruffunktion aufgezählt wird, ist der neue sichtbare Clientbereich des Fensters. |
WO_RGN_CLIENT_DELTA | GDI sollte Änderungen im Deltaclientbereich des Fensterobjekts nachverfolgen und den Treiber benachrichtigen, wenn sich der sichtbare Bereich des Fensters ändert. Die Region, die in der Rückruffunktion aufgezählt wird, ist ein nicht leerer Deltabereich, der sich in der neuen Region befindet, aber nicht in der alten Region. Der Deltabereich ist nur während des Rückrufs gültig. |
WO_RGN_DESKTOP_COORD |
GDI erstellt eine WNDOBJ-Struktur mit Desktopkoordinaten, wenn das System mehrere Monitore ausführt.
GDI ignoriert dieses Flag und erstellt eine WNDOBJ-Struktur mit Gerätekoordinaten, wenn das System einen einzelnen Monitor ausführt. |
WO_RGN_SURFACE | GDI sollte Änderungen im Oberflächenbereich des Fensterobjekts nachverfolgen und den Treiber benachrichtigen, wenn sich der Oberflächenbereich ändert. Der Oberflächenbereich ist die Anzeigeoberfläche mit Ausnahme aller sichtbaren Clientbereiche der Fenster, die vom Treiber nachverfolgt werden. |
WO_RGN_SURFACE_DELTA | GDI sollte Änderungen im Delta-Oberflächenbereich des Fensterobjekts nachverfolgen und den Treiber benachrichtigen, wenn sich der Oberflächenbereich ändert. Der bereich, der in der Rückruffunktion aufgezählt wird, ist ein nicht leerer Deltabereich, der sich im neuen Oberflächenbereich befindet, aber nicht im alten Oberflächenbereich. Der Delta-Oberflächenbereich ist nur während des Rückrufs gültig. |
WO_RGN_UPDATE_ALL | GDI sollte den Treiber für alle von ihm nachverfolgten Fenster benachrichtigen, wenn sich die sichtbaren Bereiche seiner Fenster ändern. Dieses Flag muss in Verbindung mit dem flag WO_RGN_CLIENT verwendet werden. |
WO_RGN_WINDOW | GDI sollte Änderungen im gesamten Bereich des Fensterobjekts (einschließlich des Clientbereichs des Fensters) nachverfolgen und den Treiber benachrichtigen, wenn sich die Region des Fensters ändert. |
WO_SPRITE_NOTIFY | GDI sollte den Treiber für alle Fenster benachrichtigen, die er nachverfolgt, wenn die sichtbaren Bereiche der Fenster überlappen oder nicht mehr durch Sprites überlappen. |
iPixelFormat
Gibt das Pixelformat an, das dem Fensterobjekt zugeordnet ist. Das Pixelformat eines Fensterobjekts ist fest. Dieser Parameter kann null sein, wenn kein zugeordnetes Pixelformat vorhanden ist.
Rückgabewert
Der Rückgabewert ist ein Zeiger auf eine WNDOBJ-Struktur , wenn die Funktion erfolgreich ist. Andernfalls ist der Rückgabewert −1, wenn dasselbe Fenster vom Treiber nachverfolgt wird, oder null, wenn der Treiber dasselbe Fenster nicht nachverfolgt.
Hinweise
Da das Erstellen eines Fensterobjekts das Sperren von Fensterressourcen umfasst, sollte EngCreateWnd nur im Kontext des WNDOBJ_SETUP Escapezeichens in DrvEscape aufgerufen werden.
EngCreateWnd unterstützt die Fensternachverfolgung durch mehrere Treiber, wobei jeder Treiber durch einen eindeutigen WNDOBJCHANGEPROC-Funktionszeiger identifiziert wird, der von pfn identifiziert wird. Beispielsweise kann ein Livevideotreiber Änderungen an Livevideofenstern nachverfolgen, während ein OpenGL-Treiber Änderungen an OpenGL-Fenstern nachverfolgt.
GDI ruft WNDOBJCHANGEPROC mit dem letzten Fensterstatus auf, wenn von DrvEscape ein neues WNDOBJ erstellt wird. GDI benachrichtigt auch WNDOBJCHANGEPROC , wenn ein von einer WNDOBJ-Struktur beschriebenes Fenster zerstört wird.
Die WOC_SPRITE_OVERLAP und WOC_SPRITE_NO_OVERLAP Benachrichtigungen, die an WNDOBJCHANGEPROC übergeben werden, ermöglichen es dem Treiber, synchron informiert zu werden, wenn sich ein Sprite über seinem Fenster befindet, und die entsprechende Aktion auszuführen. Der Treiber empfängt diese Benachrichtigungen, auch wenn alle Sprites durch das ECS_TEARDOWN-Flag von EngControlSprites abgerissen wurden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows 2000 und höheren Versionen der Windows-Betriebssysteme. |
Zielplattform | Universell |
Header | winddi.h (einschließlich Winddi.h) |
Bibliothek | Win32k.lib |
DLL | Win32k.sys |