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 内容,因此如果窗口具有子窗口,这些子窗口可能会剪裁可视化树。 最上面的参数确定子窗口是否剪裁可视化树。

从概念上讲,每个窗口由四个层组成:

  1. 直接绘制到窗口句柄的内容 (这是最底层) 。
  2. 可选的 DirectComposition 可视化树。
  3. 所有子窗口的内容(如果有)。
  4. 另一个可选的 DirectComposition 可视化树 (这是最顶层) 。
所有四个层都剪裁到窗口的可见区域。

最多只能为系统中的每个窗口创建两个组合目标,一个最顶层,一个不是最顶层。 如果组合目标已绑定到指定层上的指定窗口,则此方法将失败。 当合成目标对象被销毁时,它组合的层可供新的合成目标对象使用。

要求

要求
目标平台 Windows
标头 dcomp.h

另请参阅

IDCompositionDesktopDevice

IDCompositionVisual2