Share via


EngCreateWnd 関数 (winddi.h)

EngCreateWnd 関数は、hwnd によって参照されるウィンドウの WNDOBJ 構造体を作成します。

構文

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

パラメーター

pso

デバイス サーフェスを識別する SURFOBJ 構造体へのポインター。

hwnd

Win32 CreateWindow または同等の関数に対するアプリケーションの呼び出しによって作成されたウィンドウを処理します。

pfn

fl

GDI が追跡し、ドライバーに報告する必要がある変更の種類を指定するビットマスクです。 この値は、ドライバーによって行われたすべての WNDOBJ 要求を通じて一貫している必要があります。 このパラメーターには、次のビットフィールド値のうち 1 つ以上を指定できます。

フラグ 説明
WO_DRAW_NOTIFY GDI は、ドライバーにWOC_DRAWN通知を提供する必要があります。
WO_RGN_CLIENT GDI は、ウィンドウ オブジェクトのクライアント領域の変更を追跡し、ウィンドウの表示されているクライアント領域が変更されたときにドライバーに通知する必要があります。 コールバック関数で列挙される領域は、ウィンドウの新しい表示されるクライアント領域です。
WO_RGN_CLIENT_DELTA GDI は、ウィンドウ オブジェクトのデルタ クライアント領域の変更を追跡し、ウィンドウの表示領域が変更されたときにドライバーに通知する必要があります。 コールバック関数で列挙されるリージョンは、新しいリージョンにあるが古いリージョンには存在しない空のデルタ領域です。 デルタ リージョンは、コールバック中にのみ有効です。
WO_RGN_DESKTOP_COORD GDI は、システムが複数のモニターを実行しているときに、デスクトップ座標を持つ WNDOBJ 構造体を作成します。

GDI は、このフラグを無視し、システムが 1 つのモニターを実行しているときに、デバイス座標を持つ WNDOBJ 構造体を作成します。

WO_RGN_SURFACE GDI は、ウィンドウ オブジェクトのサーフェス領域の変更を追跡し、サーフェス領域が変更されたときにドライバーに通知する必要があります。 サーフェス領域は、ドライバーによって追跡されているウィンドウのすべての可視クライアント領域を除く表示サーフェス領域です。
WO_RGN_SURFACE_DELTA GDI は、ウィンドウ オブジェクトのデルタ サーフェス領域の変更を追跡し、サーフェス領域が変更されたときにドライバーに通知する必要があります。 コールバック関数で列挙される領域は、新しいサーフェス領域にあるが、古いサーフェス領域にない空でないデルタ領域です。 デルタ サーフェス領域は、コールバック中にのみ有効です。
WO_RGN_UPDATE_ALL GDI は、そのウィンドウの表示領域のいずれかが変更されたときに追跡するすべてのウィンドウのドライバーに通知する必要があります。 このフラグは、WO_RGN_CLIENT フラグと組み合わせて使用する必要があります。
WO_RGN_WINDOW GDI は、ウィンドウ オブジェクト (ウィンドウのクライアント領域を含む) の領域全体の変更を追跡し、ウィンドウの領域が変更されたときにドライバーに通知する必要があります。
WO_SPRITE_NOTIFY GDI は、ウィンドウの可視領域のいずれかが重複しているか、スプライトによって重複しなくなったときに、追跡するすべてのウィンドウについてドライバーに通知する必要があります。

iPixelFormat

ウィンドウ オブジェクトに関連付けられているピクセル形式を指定します。 ウィンドウ オブジェクトのピクセル形式は固定されています。 関連付けられたピクセル形式がない場合、このパラメーターは 0 にすることができます。

戻り値

関数が成功した場合、戻り値は WNDOBJ 構造体へのポインターです。 それ以外の場合、同じウィンドウがドライバーによって追跡されている場合は -1、ドライバーが同じウィンドウを追跡していない場合は 0 が返されます。

注釈

ウィンドウ オブジェクトの作成にはウィンドウ リソースのロックが含まれるため、DrvEscape のWNDOBJ_SETUP エスケープのコンテキストでのみ EngCreateWnd を呼び出す必要があります。

EngCreateWnd では、複数のドライバーによるウィンドウ追跡がサポートされています。各ドライバーは、pfn によって識別される一意の WNDOBJCHANGEPROC 関数ポインターによって識別されます。 たとえば、ライブ ビデオ ドライバーは、OpenGL ドライバーが OpenGL ウィンドウへの変更を追跡している間、ライブ ビデオ ウィンドウの変更を追跡できます。

GDI は、DrvEscape によって新しい WNDOBJ が作成された場合、最新のウィンドウ状態で WNDOBJCHANGEPROC を呼び出します。 GDI は、 WNDOBJ 構造体によって記述されたウィンドウが破棄されたときにも WNDOBJCHANGEPROC に通知します。

WNDOBJCHANGEPROC に渡されるWOC_SPRITE_OVERLAP通知とWOC_SPRITE_NO_OVERLAP通知を使用すると、スプライトがウィンドウの上部にあるときにドライバーに同期的に通知され、適切なアクションを実行できます。 ドライバーは、すべてのスプライトが EngControlSprites のECS_TEARDOWN フラグによって破棄された場合でも、これらの通知を受け取ります。

要件

要件
サポートされている最小のクライアント Windows 2000 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム ユニバーサル
Header winddi.h (Winddi.h を含む)
Library Win32k.lib
[DLL] Win32k.sys

こちらもご覧ください

DrvEscape

WNDOBJ

WNDOBJCHANGEPROC