winrt::capture 函数模板 (C++/WinRT)

调用指定函数或方法的函数模板 () 自动调用 winrt::check_hresult,捕获函数或方法输出的接口指针,如果T派生自 Windows::Foundation::IUnknown,则将其作为模板参数typename T返回,否则返回 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 零个或多个参数类型。

parameters

function 类型的 F函数对象。

p 指向类型的 O对象的指针。

objectwinrt::com_ptr类型O

methodO 类型 M) 实现的方法 (。

args 类型的 Args零个或多个参数。

返回值

如果派生自 Windows::Foundation::IUnknown,则返回 winrt::com_ptrTT 如果失败,将引发。

备注

  • 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) 的目标的 ID,以及 void** (指向 winrt::com_ptr) 目标的指针的地址。

要求

支持的最低 SDK:Windows SDK 版本 10.0.17134.0 (Windows 10版本 1803)

命名空间: winrt

标头: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (默认包含)

请参阅