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 |