winrt::capture-Funktionsvorlage (C++/WinRT)
Eine Funktionsvorlage, die eine angegebene Funktion oder Methode aufruft (automatisch winrt::check_hresult darauf aufrufen), erfasst den Schnittstellenzeiger, der aus der Funktion oder Methode ausgegeben wird, und gibt ihn als Vorlagenparameter typename T
zurück, wenn T
er von Windows::Foundation::IUnknown abgeleitet wird, andernfalls wird ein Winrt::com_ptr zurückgegeben. Wird ausgelöst, wenn es nicht erfolgreich ist.
Siehe auch die winrt::com_ptr::Capture-Funktion.
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);
Vorlagenparameter
typename T
Der Typ des Schnittstellenzeigers, der aus der Funktion oder Methode ausgegeben wird.
typename F
Ein Funktionsobjekttyp, z. B. eine kostenlose Funktion oder std::function.
typename O
Ein Schnittstellentyp.
typename M
Ein Methodentyp.
typename Args
Null oder mehr Argumenttypen.
Parameter
function
Ein Funktionsobjekt vom Typ F
.
p
Ein Zeiger auf ein Objekt vom Typ O
.
object
Ein Winrt::com_ptr vom Typ O
.
method
Eine Methode (implementiert nach O
) des Typs M
.
args
Null oder mehr Argumente des Typs Args
.
Rückgabewert
Gibt zurückT
, wenn T
sie von Windows::Foundation::IUnknown abgeleitet wird, andernfallswinrt::com_ptr zurück. Wird ausgelöst, wenn es nicht erfolgreich ist.
Hinweise
- Die
capture(F function, Args&&...args)
Überladung ruft das Funktionsobjekt auf. - Die
capture(O* p, M method, Args&& ...args)
Überladung ruft die Methode auf dem Zeiger auf. - Die
capture(winrt::com_ptr<O> const& object, M method, Args&&...args)
Überladung ruft die Methode auf dem Objekt auf.
Alle Überladungen durchlaufen (an den Aufruf) alle zusätzlichen Argumente, die Sie bereitstellen. Alle Überladungen übergeben auch die beiden zusätzlichen Argumente, die solche Aufrufe erfordern– insbesondere eine REFIID (die ID des Ziels des Winrt::com_ptr), und ein Void ** (Die Adresse eines Zeigers auf das Ziel des winrt::com_ptr).
Anforderungen
Mindest unterstützte SDK: Windows SDK Version 10.0.17134.0 (Windows 10, Version 1803)
Namespace: winrt
Header: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (standardmäßig enthalten)