Partager via


winrt::try_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 généré à partir de la fonction ou de la méthode, et le retourne en tant que paramètre typename T de modèle si T dérive de Windows::Foundation::IUnknown, sinon, retourne un winrt::com_ptr. Retourne un com_ptr vide s’il n’a pas réussi.

Consultez également la fonction winrt::com_ptr::try_capture.

Syntax

template <typename T, typename F, typename...Args>
impl::com_ref<T> try_capture(F function, Args&& ...args);

template <typename T, typename O, typename M, typename...Args>
impl::com_ref<T> try_capture(O* p, M method, Args&& ...args);

template <typename T, typename O, typename M, typename...Args>
impl::com_ref<T> try_capture(com_ptr<O> const& object, M method, Args&& ...args);

Paramètres de modèle

typename T Type du pointeur d’interface qui est généré à partir de la fonction ou de 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

Retourne T si T dérive de Windows::Foundation::IUnknown, sinon, retourne winrt::com_ptr. Retourne un com_ptr vide s’il n’a pas réussi.

Remarques

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

Toutes les surcharges passent (à l’appelant) tous les arguments supplémentaires que vous fournissez. Toutes les surcharges transmettent é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 de winrt::com_ptr).

Spécifications

Sdk minimum pris en charge : Windows SDK version 10.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