次の方法で共有


IDCompositionDesktopDevice::CreateSurfaceFromHwnd メソッド (dcomp.h)

レイヤーウィンドウのラスタライズを表し、コンポジションのビジュアルに関連付けることができるラッパー オブジェクトを作成します。

構文

HRESULT CreateSurfaceFromHwnd(
  [in]  HWND     hwnd,
  [out] IUnknown **surface
);

パラメーター

[in] hwnd

ラッパーを作成するレイヤーウィンドウのハンドル。 レイヤーウィンドウは、 CreateWindowEx 関数を使用してウィンドウを作成するときにWS_EX_LAYEREDを指定するか、ウィンドウの作成後に SetWindowLong を使用してWS_EX_LAYEREDを設定することによって作成されます。

[out] surface

新しいコンポジション サーフェス オブジェクト。 このパラメーターを NULL にすることはできません。

戻り値

関数が成功した場合は、S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。 エラー コードの一覧については、「 DirectComposition エラー コード 」を参照してください。

注釈

IDCompositionVisual::SetContent メソッドの呼び出しでサーフェス ポインターを使用して、1 つ以上のビジュアルのコンテンツを設定できます。 コンテンツを設定すると、ウィンドウがレイヤー化されている限り、ビジュアルは指定されたレイヤーウィンドウのコンテンツを構成します。 ウィンドウがレイヤー化されていない場合、ウィンドウの内容はコンポジション ツリーの出力から消えます。 ウィンドウが後でレイヤー化された場合は、ビジュアルに関連付けられている限り、ウィンドウコンテンツが再び表示されます。 ウィンドウのサイズを変更すると、影響を受けるビジュアルが再作成されます。

ウィンドウの内容は、ウィンドウの有効期間を超えてキャッシュされません。 つまり、ウィンドウが破棄されると、影響を受けるビジュアルはウィンドウの作成を停止します。

ウィンドウを画面外に移動するか、サイズを 0 に変更すると、システムはそれらのビジュアルのコンテンツの作成を停止します。 元のウィンドウを非表示にし、システムがビジュアルのコンテンツを作成し続ける必要がある場合は、 dwmSetWindowAttribute 関数を DWMWA_CLOAK フラグと共に使用して、レイヤー化された子ウィンドウを "クローク" する必要があります。

要件

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

こちらもご覧ください

IDCompositionDesktopDevice

IDCompositionVisual::SetContent