winrt::capture templat fungsi (C++/WinRT)

Templat fungsi yang memanggil fungsi atau metode tertentu (secara otomatis memanggil winrt::check_hresult ), menangkap penunjuk antarmuka yang keluaran dari fungsi atau metode, dan mengembalikannya sebagai parameter typename T templat jika T berasal dari Windows::Foundation::IUnknown, jika tidak, mengembalikan winrt::com_ptr. Melempar jika tidak berhasil.

Lihat juga fungsi winrt::com_ptr::capture.

Sintaks

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);

Parameter templat

typename T Jenis penunjuk antarmuka yang dihasilkan dari fungsi atau metode .

typename F Jenis objek fungsi, seperti fungsi bebas, atau std::function.

typename O Jenis antarmuka.

typename M Jenis metode.

typename Args Jenis argumen nol atau lebih.

Parameter

function Objek fungsi jenis F.

p Penunjuk ke objek jenis O.

objectWinrt::com_ptr jenis O.

method Metode (diimplementasikan oleh O) dari jenis M.

args Argumen nol atau lebih dari jenis Args.

Mengembalikan nilai

Mengembalikan T jika T berasal dari Windows::Foundation::IUnknown, jika tidak, mengembalikan winrt::com_ptr. Melempar jika tidak berhasil.

Keterangan

  • Kelebihan capture(F function, Args&&...args) beban memanggil objek fungsi.
  • Kelebihan capture(O* p, M method, Args&& ...args) beban memanggil metode pada penunjuk.
  • Kelebihan capture(winrt::com_ptr<O> const& object, M method, Args&&...args) beban memanggil metode pada objek .

Semua kelebihan beban melewati (ke pemanggilan) argumen tambahan apa pun yang Anda berikan. Semua kelebihan beban juga meneruskan dua argumen tambahan yang diperlukan pemanggilan tersebut—khususnya, REFIID (ID target winrt::com_ptr), dan kekosongan** (Alamat penunjuk ke target winrt::com_ptr).

Persyaratan

SDK minimum yang didukung: Windows SDK versi 10.0.17134.0 (Windows 10, versi 1803)

Namespace: winrt

Header: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (disertakan secara default)

Lihat juga