modello di funzione winrt::try_capture (C++/WinRT)

Un modello di funzione che chiama una funzione o un metodo specificato (chiamando automaticamente winrt::check_hresult su di esso), acquisisce il puntatore dell'interfaccia che viene restituito dalla funzione o dal metodo e lo restituisce come parametro typename T modello se T deriva da Windows::Foundation::IUnknown, in caso contrario, restituisce un valore winrt::com_ptr. Restituisce un com_ptr vuoto se non ha esito positivo.

Vedere anche la funzione winrt::com_ptr::try_capture.

Sintassi

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

Parametri di modelli

typename T Tipo del puntatore dell'interfaccia che viene restituito dalla funzione o dal metodo.

typename F Tipo di oggetto funzione, ad esempio una funzione gratuita o std::function.

typename O Tipo di interfaccia.

typename M Tipo di metodo.

typename Args Zero o più tipi di argomento.

Parametri

function Oggetto funzione di tipo F.

p Puntatore a un oggetto di tipo O.

object Oggetto winrt::com_ptr di tipo O.

method Metodo (implementato da O) di tipo M.

args Zero o più argomenti di tipo Args.

Valore restituito

Restituisce T se T deriva da Windows::Foundation::IUnknown, in caso contrario, restituisce winrt::com_ptr. Restituisce un com_ptr vuoto se non ha esito positivo.

Commenti

  • L'overload try_capture(F function, Args&&...args) richiama l'oggetto funzione.
  • L'overload try_capture(O* p, M method, Args&& ...args) richiama il metodo sul puntatore.
  • L'overload try_capture(winrt::com_ptr<O> const& object, M method, Args&&...args) richiama il metodo nell'oggetto .

Tutti gli overload passano (per l'oggetto invoke) tutti gli argomenti aggiuntivi forniti. Tutti gli overload passano anche i due argomenti aggiuntivi che tali richiami richiedono, in particolare un REFIID (l'ID della destinazione dell'oggetto winrt::com_ptr) e un void** (indirizzo di un puntatore alla destinazione di winrt::com_ptr).

Requisiti

SDK minimo supportato: Windows SDK versione 10.0.17134.0 (Windows 10, versione 1803)

Spazio dei nomi: winrt

Intestazione: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (incluso per impostazione predefinita)

Vedi anche