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
零個或多個引數類型。
參數
function
型 F
別的函式物件。
p
型 O
別 物件的指標。
object
類型的 O
winrt::com_ptr。
method
方法 (由 類型 M
) 實作 O
。
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) 的目標識別碼,以及 void** (winrt::com_ptr) 目標指標的位址。
規格需求
最低支援的 SDK:Windows SDK 10.0.17134.0 版 (Windows 10版本 1803)
命名空間: winrt
標頭: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion <> \cppwinrt\winrt\base.h 預設包含 ()