Поделиться через


Метод IDCompositionDesktopDevice::CreateTargetForHwnd (dcomp.h)

Создает целевой объект композиции, привязанный к окну, представленному указанным дескриптором окна.

Синтаксис

HRESULT CreateTargetForHwnd(
  [in]  HWND                hwnd,
        BOOL                topmost,
  [out] IDCompositionTarget **target
);

Параметры

[in] hwnd

Окно, к которому должен быть привязан целевой объект композиции. Этот параметр не должен иметь значение NULL.

topmost

Значение TRUE, если визуальное дерево должно отображаться поверх дочерних элементов окна, указанного параметром hwnd; в противном случае визуальное дерево отображается за дочерними элементами.

[out] target

Новый целевой объект композиции. Этот параметр не должен иметь значение NULL.

Возвращаемое значение

Если функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT . Список кодов ошибок см. в разделе Коды ошибок DirectComposition .

Комментарии

Визуальное дерево DirectComposition должно быть привязано к окну, прежде чем что-либо можно будет отобразить на экране. Окно может быть окном верхнего уровня или дочерним окном. В любом случае окно может быть многослойным, но во всех случаях окно должно принадлежать вызывающей процедуре. Если окно принадлежит другому процессу, этот метод возвращает DCOMPOSITION_ERROR_ACCESS_DENIED.

Когда содержимое DirectComposition создается в окно, содержимое всегда создается поверх всего, что обращается непосредственно к окну через контекст устройства, возвращаемый функцией GetDC , или посредством вызовов методов DirectX Present. Однако, поскольку правила обрезки окон применяются к содержимому DirectComposition, если в окне есть дочерние окна, эти дочерние окна могут обрезать визуальное дерево. Самый верхний параметр определяет, обрезают ли дочерние окна визуальное дерево.

По сути, каждое окно состоит из четырех уровней:

  1. Содержимое, нарисованное непосредственно в дескриптор окна (это самый нижний слой).
  2. Необязательное визуальное дерево DirectComposition.
  3. Содержимое всех дочерних окон, если таковые есть.
  4. Другое необязательное визуальное дерево DirectComposition (это самый верхний слой).
Все четыре слоя обрезаются к видимой области окна.

Для каждого окна в системе можно создать не более двух целевых объектов композиции: один самый верхний и один не самый верхний. Если целевой объект композиции уже привязан к указанному окну на указанном уровне, этот метод завершается ошибкой. При уничтожении целевого объекта композиции слой, который он составил, доступен для использования новым целевым объектом композиции.

Требования

Требование Значение
Целевая платформа Windows
Header dcomp.h

См. также раздел

IDCompositionDesktopDevice

IDCompositionVisual2