Partager via


winrt::capture, modèle de fonction (C++/WinRT)

Un modèle de fonction qui appelle une fonction ou une méthode spécifiée (appelant automatiquement winrt::check_hresult dessus), capture le pointeur d’interface qui est sortie de la fonction ou de la méthode, et le retourne comme paramètre typename T de modèle si T dérive de Windows::Foundation::IUnknown, sinon, retourne un winrt::com_ptr. Lève s’il n’a pas réussi.

Voir également la fonction winrt::com_ptr::capture.

Syntax

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

Paramètres de modèle

typename T Type du pointeur d’interface qui génère la fonction ou la méthode.

typename F Type d’objet de fonction, tel qu’une fonction libre ou std::function.

typename O Type d’interface.

typename M Type de méthode.

typename Args Zéro ou plusieurs types d’arguments.

Paramètres

function Objet de fonction de type F.

p Pointeur vers un objet de type O.

objectWinrt::com_ptr de type O.

method Méthode (implémentée par O) de type M.

args Zéro ou plusieurs arguments de type Args.

Valeur retournée

Renvoie T si T elle dérive de Windows::Foundation::IUnknown, sinon, retourne winrt::com_ptr. Lève s’il n’a pas réussi.

Remarques

  • La capture(F function, Args&&...args) surcharge appelle l’objet de fonction.
  • La capture(O* p, M method, Args&& ...args) surcharge appelle la méthode sur le pointeur.
  • La capture(winrt::com_ptr<O> const& object, M method, Args&&...args) surcharge appelle la méthode sur l’objet.

Toutes les surcharges passent (à l’appel) tous les arguments supplémentaires que vous fournissez. Toutes les surcharges passent également les deux arguments supplémentaires requis par ces appels, en particulier un REFIID (ID de la cible du winrt::com_ptr) et un void** (adresse d’un pointeur vers la cible du winrt::com_ptr).

Spécifications

Kit de développement logiciel (SDK) pris en charge minimum : Windows SDK version 10.0.0.17134.0 (Windows 10, version 1803)

Espace de noms : winrt

En-tête : %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (inclus par défaut)

Voir aussi