Шаблон функции winrt::capture (C++/WinRT)

Шаблон функции, который вызывает указанную функцию или метод (автоматически вызывая winrt::check_hresult в ней), записывает указатель интерфейса, который выводится из функции или метода, и возвращает его в качестве параметра typename T шаблона, если T он является производным от Windows::Foundation::IUnknown, в противном случае возвращает winrt::com_ptr. Создает исключение, если оно не выполнено.

Также см. функцию winrt::com_ptr::capture.

Синтаксис

template <typename T, typename F, typename...Args>
impl::com_ref<T> capture(F function, Args&& ...args);

template <typename T, typename O, typename M, typename...Args>
impl::com_ref<T> capture(O* p, M method, Args&& ...args);

template <typename T, typename O, typename M, typename...Args>
impl::com_ref<T> capture(com_ptr<O> const& object, M method, Args&& ...args);

Параметры шаблона

typename T Тип указателя интерфейса, который выводится из функции или метода.

typename F Тип объекта функции, например свободная функция или std::function.

typename O Тип интерфейса.

typename M Тип метода.

typename Args Ноль или более типов аргументов.

Параметры

function Объект функции типа F.

p Указатель на объект типа O.

objectТип winrt::com_ptrO.

methodМетод (реализован по типуOM).

args Ноль или более аргументов типа Args.

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

Возвращает значениеT, если T является производным от Windows::Foundation::IUnknown, в противном случае возвращает winrt::com_ptr. Создает исключение, если оно не выполнено.

Комментарии

  • Перегрузка capture(F function, Args&&...args) вызывает объект функции.
  • Перегрузка capture(O* p, M method, Args&& ...args) вызывает метод на указателе.
  • Перегрузка capture(winrt::com_ptr<O> const& object, M method, Args&&...args) вызывает метод объекта.

Все перегрузки передают (в вызываемого) все указанные дополнительные аргументы. Все перегрузки также передают два дополнительных аргумента, необходимых таким вызовам( в частности, REFIID (идентификатор целевого объекта winrt::com_ptr) и void** (адрес указателя на целевой объект winrt::com_ptr).

Требования

Минимальный поддерживаемый пакет SDK: пакет SDK Windows версии 10.0.17134.0 (Windows 10 версии 1803)

Пространство имен: winrt

Заголовок: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (включен по умолчанию)

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