IDCompositionDevice::CreateSurfaceFromHwnd 메서드(dcomp.h)

계층화된 창의 래스터화를 나타내고 컴퍼지션을 위해 시각적 개체와 연결할 수 있는 래퍼 개체를 만듭니다.

구문

HRESULT CreateSurfaceFromHwnd(
  HWND     hwnd,
  IUnknown **surface
);

매개 변수

hwnd

형식: [in] HWND

래퍼를 만들 계층화된 창의 핸들입니다. CreateWindowEx 함수를 사용하여 창을 만들 때 WS_EX_LAYERED 지정하거나 창을 만든 후 SetWindowLong을 통해 WS_EX_LAYERED 설정하여 계층화된 창을 만듭니다.

surface

형식: [out] IUnknown**

새 컴퍼지션 표면 개체입니다. 이 매개 변수는 NULL이 아니어야 합니다.

반환 값

형식: HRESULT

함수가 성공하면 S_OK를 반환합니다. 그러지 않으면 HRESULT 오류 코드를 반환합니다. 오류 코드 목록은 DirectComposition 오류 코드를 참조하세요.

설명

IDCompositionVisual::SetContent 메서드를 호출할 때 Surface 포인터를 사용하여 하나 이상의 시각적 개체의 콘텐츠를 설정할 수 있습니다. 콘텐츠를 설정한 후 시각적 개체는 창이 계층화되는 한 지정된 계층화된 창의 콘텐츠를 작성합니다. 창이 계층화되지 않으면 창 콘텐츠가 컴퍼지션 트리의 출력에서 사라집니다. 창이 나중에 다시 계층화되면 창 콘텐츠가 시각적 개체와 연결되어 있는 한 다시 나타납니다.

창의 크기를 조정하면 영향을 받는 시각적 개체가 다시 구성됩니다.

창의 내용은 창의 수명 이후 캐시되지 않습니다. 즉, 창이 제거되면 영향을 받는 시각적 개체가 창 작성을 중지합니다.

창이 화면 끄기로 이동되거나 크기가 0으로 조정되면 시스템에서 시각적 개체의 콘텐츠 작성을 중지합니다. 시스템이 시각적 개체의 콘텐츠를 계속 작성할 수 있도록 하면서 원래 창을 숨겨야 하는 경우 DwmSetWindowAttribute 함수를 DWMWA_CLOAK 플래그와 함께 사용하여 계층화된 자식 창을 "은폐"해야 합니다. 자세한 내용은 계층화된 자식 창의 비트맵에 애니메이션 효과를 주는 방법DirectComposition 계층화된 자식 창 샘플을 참조하세요.

예제

다음 코드 조각은 계층화된 창의 래스터화를 나타내는 래퍼 개체를 만듭니다.

HRESULT hr = S_OK;
IDCompositionVisual *pVisual = nullptr;
IUnknown *pSurface = nullptr;

// Create a visual. g_pDevice is the IDCompositionDevice pointer of a 
// device object created earlier.
hr = g_pDevice->CreateVisual(&pVisual);

if (SUCCEEDED(hr))
{
    // Create a surface that contains the image of the layered child 
    // window identified by the g_hwndChild window handle (HWND). 
    hr = g_pDevice->CreateSurfaceFromHwnd(g_hwndChild, &pSurface);
}

if (SUCCEEDED(hr))
{
    // Set the content of the Control child visual.
    hr = pVisual->SetContent(pSurface);
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 dcomp.h
라이브러리 Dcomp.lib
DLL Dcomp.dll

추가 정보

IDCompositionDevice

IDCompositionDevice::CreateSurface

IDCompositionDevice::CreateSurfaceFromHandle