次の方法で共有


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 コンテンツに適用されるため、ウィンドウに子ウィンドウがある場合、それらの子ウィンドウはビジュアル ツリーをクリップする可能性があります。 最上位のパラメーターは、子ウィンドウがビジュアル ツリーをクリップするかどうかを決定します。

概念的には、各ウィンドウは次の 4 つのレイヤーで構成されます。

  1. ウィンドウ ハンドルに直接描画される内容 (これは最も下部のレイヤーです)。
  2. オプションの DirectComposition ビジュアル ツリー。
  3. すべての子ウィンドウの内容 (存在する場合)。
  4. 別のオプションの DirectComposition ビジュアル ツリー (これは最上位レイヤー)。
4 つのレイヤーはすべて、ウィンドウの表示領域にクリップされます。

システム内のウィンドウごとに作成できるコンポジション ターゲットは、最大で 2 つだけです。1 つは最上位で、1 つは最上位ではありません。 コンポジション ターゲットが指定したレイヤーで指定されたウィンドウに既にバインドされている場合、このメソッドは失敗します。 コンポジション ターゲット オブジェクトが破棄されると、構成されたレイヤーは新しいコンポジション ターゲット オブジェクトで使用できます。

要件

要件
対象プラットフォーム Windows
ヘッダー dcomp.h

こちらもご覧ください

IDCompositionDesktopDevice

IDCompositionVisual2