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
对象的指针。
object
winrt::com_ptr类型O
。
method
由 O
类型 M
) 实现的方法 (。
args
类型的 Args
零个或多个参数。
返回值
如果派生自 Windows::Foundation::IUnknown,则返回 winrt::com_ptr。T
T
如果失败,将引发。
备注
- 重
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 (默认包含)