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

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

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

Синтаксис

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

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

template <typename T, typename O, typename M, typename...Args>
impl::com_ref<T> try_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 производный от Windows::Foundation::IUnknown, в противном случае возвращает Twinrt::com_ptr. Возвращает пустую com_ptr , если она не выполнена.

Комментарии

  • Перегрузка try_capture(F function, Args&&...args) вызывает объект функции.
  • Перегрузка try_capture(O* p, M method, Args&& ...args) вызывает метод на указателе.
  • Перегрузка try_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 (включен по умолчанию)

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