Шаблон функции 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
Метод (реализуется по типуO
M
).
args
Ноль или более аргументов типа Args
.
Возвращаемое значение
Возвращает значение, если T
производный от Windows::Foundation::IUnknown, в противном случае возвращает T
winrt::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 (включен по умолчанию)
См. также раздел
- Пространство имен WinRT
- Шаблон функции capture
- winrt::com_ptr struct template (C++/WinRT) (Шаблон структуры winrt::com_ptr (C++/WinRT))
- Функция winrt::com_ptr::try_capture