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
.
object
Winrt::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)