共用方式為


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 要求保持一致。 此參數可以是下列一或多個位欄位值:

旗標 意義
WO_DRAW_NOTIFY GDI 應該提供驅動程式WOC_DRAWN通知。
WO_RGN_CLIENT GDI 應該追蹤視窗物件的用戶端區域中的變更,並在視窗可見的用戶端區域變更時通知驅動程式。 回呼函式中列舉的區域是視窗的新可見工作區。
WO_RGN_CLIENT_DELTA GDI 應該追蹤視窗物件差異用戶端區域中的變更,並在視窗可見區域變更時通知驅動程式。 回呼函式中列舉的區域是位於新區域,但不在舊區域中的無空差異區域。 差異區域只在回呼期間有效。
WO_RGN_DESKTOP_COORD GDI 會在系統執行多個監視器時,建立具有桌面座標的 WNDOBJ 結構。

GDI 會忽略此旗標,並在系統執行單一監視器時,建立具有裝置座標的 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 當 Windows 的任何可見區域重疊或 Sprite 不再重疊時,GDI 應該通知驅動程式它追蹤的所有視窗。

iPixelFormat

指定與視窗對象相關聯的像素格式。 視窗物件的像素格式是固定的。 如果沒有相關聯的圖元格式,這個參數可以是零。

傳回值

如果函式成功,傳回值是 WNDOBJ 結構的指標。 否則,如果驅動程式正在追蹤相同的視窗,則傳回值為 -1;如果驅動程式未追蹤相同的視窗,則傳回值為零。

備註

因為建立窗口物件牽涉到鎖定窗口資源, 所以 EngCreateWnd 應該只在 DrvEscape中逸出WNDOBJ_SETUP的內容中呼叫。

EngCreateWnd 支援多個驅動程式的窗口追蹤,其中每個驅動程式都是由 pfn 所識別的唯一 WNDOBJCHANGEPROC 函式指標所識別。 例如,實時視訊驅動程式可以在 OpenGL 驅動程式追蹤 OpenGL 視窗的變更時追蹤即時視訊視窗的變更。

如果DrvEscape建立新的WNDOBJ,GDI會以最新的窗口狀態呼叫 WNDOBJCHANGEPROC 當WNDOBJ結構所描述的窗口終結時,GDI也會通知 WNDOBJCHANGEPROC

傳遞至 WNDOBJCHANGEPROC 的WOC_SPRITE_OVERLAP和WOC_SPRITE_NO_OVERLAP通知可讓驅動程式在其視窗上方同步通知,並採取適當的動作。 驅動程式會接收這些通知,即使所有Sprite都已由 EngControlSprites的 ECS_TEARDOWN旗標損毀也一樣。

規格需求

需求
最低支援的用戶端 適用於 Windows 2000 和更新版本的 Windows 作業系統。
目標平台 Universal
標頭 winddi.h (包含Winddi.h)
程式庫 Win32k.lib
Dll Win32k.sys

另請參閱

DrvEscape

WNDOBJ

WNDOBJCHANGEPROC