IDCompositionDesktopDevice::CreateTargetForHwnd 方法 (dcomp.h)
创建绑定到由指定窗口句柄表示的窗口的合成目标对象。
语法
HRESULT CreateTargetForHwnd(
[in] HWND hwnd,
BOOL topmost,
[out] IDCompositionTarget **target
);
参数
[in] hwnd
组合目标对象应绑定到的窗口。 此参数不能为 NULL。
topmost
如果可视化树应显示在 hwnd 参数指定的窗口的子级之上,则为 TRUE;否则,可视化树显示在子项后面。
[out] target
新的组合目标对象。 此参数不能为 NULL。
返回值
如果函数成功,则返回S_OK。 否则,将返回 HRESULT 错误代码。 有关错误代码列表,请参阅 DirectComposition 错误代码。
注解
DirectComposition 可视化树必须先绑定到窗口,然后才能在屏幕上显示任何内容。 窗口可以是顶级窗口,也可以是子窗口。 在任一情况下,窗口都可以是分层窗口,但在所有情况下,窗口都必须属于调用进程。 如果窗口属于其他进程,则此方法返回 DCOMPOSITION_ERROR_ACCESS_DENIED。
当 DirectComposition 内容被组合到窗口时,内容始终基于通过 GetDC 函数返回的设备上下文或通过对 DirectX Present 方法的调用直接绘制到该窗口的任何内容进行组合。 但是,由于窗口剪辑规则适用于 DirectComposition 内容,因此如果窗口具有子窗口,这些子窗口可能会剪裁可视化树。 最上面的参数确定子窗口是否剪裁可视化树。
从概念上讲,每个窗口由四个层组成:
- 直接绘制到窗口句柄的内容 (这是最底层) 。
- 可选的 DirectComposition 可视化树。
- 所有子窗口的内容(如果有)。
- 另一个可选的 DirectComposition 可视化树 (这是最顶层) 。
最多只能为系统中的每个窗口创建两个组合目标,一个最顶层,一个不是最顶层。 如果组合目标已绑定到指定层上的指定窗口,则此方法将失败。 当合成目标对象被销毁时,它组合的层可供新的合成目标对象使用。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | dcomp.h |