Condividi tramite


modello di struct winrt::implements (C++/WinRT)

Si tratta della base da cui derivano direttamente o indirettamente le proprie implementazioni C++/WinRT (di classi di runtime e factory di attivazione). Implementa una o più interfacce Windows Runtime (specificate come parametri di tipo) e fornisce anche implementazioni efficienti di IUnknown, IInspectable, IAgileObject, IWeakReferenceSource e altri.

Nota

Per altre informazioni sulla derivazione di questo tipo ed esempi, vedere Api di creazione con C++/WinRT.

Punti di estensione in winrt::implements

winrt::implements include punti di estensione che consentono di rinviare la distruzione dei tipi di implementazione, di eseguire query in modo sicuro durante la distruzione e di collegare l'ingresso e uscire dai metodi proiettati. Ecco i nomi dei punti di estensione, insieme ai collegamenti a dettagli ed esempi di codice.

Tipi di marcatore

Il modello di struct implementa supporta diversi tipi di marcatore usati per eseguire l'override del comportamento predefinito. Ci aspettiamo che questi saranno usati solo raramente; le impostazioni predefinite sono sufficienti per quasi tutti i casi. Un tipo di marcatore può essere visualizzato ovunque nell'elenco di interfacce, ovvero il pacchetto di parametri variadic.

I tipi di marcatore seguenti sono supportati da implementi:

Questo primo esempio si applica quando si deriva direttamente da implementi.

struct MyImplementation: implements<MyImplementation, IFrameworkViewSource, no_weak_ref>
{
    ...
}

Questo esempio successivo è per quando si crea una classe di runtime.

struct BookSku : BookSkuT<BookSku, no_weak_ref>
{
    ...
}

Sintassi

template <typename D, typename... I>
struct implements

Parametri di modelli

typename D Nome del tipo derivato.

typename... I Qualsiasi numero di interfacce da implementare, oltre a qualsiasi tipo di marcatore desiderato.

Per impostazione predefinita, le interfacce derivate da IInspectable vengono segnalate dall'implementazione del metodo IInspectable::GetIids . Usare il cloaked modello di marcatore per eliminarlo.

Esempio

// App.cpp
...
struct App : implements<App, IFrameworkViewSource>
{
    IFrameworkView CreateView()
    {
        return ...
    }
}
...

Requisiti

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

Spazio dei nomi: winrt

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

Funzioni membro

Funzione Descrizione
implements::AddRef function Incrementa il conteggio dei riferimenti per l'interfaccia predefinita dell'oggetto implements .
implementa la funzione::find_inspectable TBD
implements::find_interface funzione Puntatore all'interfaccia implementata dall'oggetto implements , identificato dall'identificatore specificato; non chiama AddRef.
implements::get_local_iids function Recupera una tupla a due elementi contenente gli identificatori delle interfacce implementate dall'oggetto implements .
implements::get_strong funzione Recupera un riferimento sicuro all'oggetto implementaquesto puntatore.
Funzione implements::get_weak Recupera un riferimento debole all'oggetto implementaquesto puntatore.
implementa la funzione::QueryInterface Recupera il puntatore all'interfaccia implementata dall'oggetto implements , identificato dall'identificatore specificato; chiama AddRef.
implementa la funzione::Release Decrementa il conteggio dei riferimenti per l'interfaccia predefinita dell'oggetto implements .

Operatori membri

Operatore Descrizione
implements::operator Windows::Foundation::IInspectable Converte l'oggetto implementa in un oggetto Windows::Foundation::IInspectable.

Membri dati

Membro dei dati Descrizione
m_inner Accede all'oggetto composto , se applicabile. Per altre informazioni, vedere Derivazione della classe di runtime.

implements::AddRef function

Incrementa il conteggio dei riferimenti per l'interfaccia predefinita dell'oggetto implements .

Sintassi

unsigned long __stdcall AddRef() noexcept;

Valore restituito

Nuovo conteggio dei riferimenti. Questo valore deve essere usato solo a scopo di test.

implementa la funzione::find_inspectable

Recupera il puntatore all'interfaccia IInspectable implementata dall'oggetto implements . Non chiama AddRef sul puntatore restituito. Questa funzione consente di passare l'oggetto implements a una funzione che prevede un oggetto IInspectable.

Sintassi

::IInspectable* find_inspectable() const noexcept override;

Valore restituito

Puntatore all'interfaccia IInspectable implementata dall'oggetto implements .

implements::find_interface funzione

Recupera il puntatore all'interfaccia implementata dall'oggetto implements , identificato dall'identificatore specificato. Non chiama AddRef sul puntatore restituito.

Sintassi

void* find_interface(winrt::guid const& id) const noexcept override;

Valore restituito

Puntatore all'interfaccia implementata dall'oggetto implements , identificato dall'identificatore specificato.

implements::get_local_iids function

Recupera una tupla a due elementi contenente gli identificatori delle interfacce implementate dall'oggetto implements . Le interfacce "Mantello" non sono incluse.

Sintassi

std::pair<uint32_t, const winrt::guid*> get_local_iids() const noexcept override;

Valore restituito

Tupla a due elementi contenente il numero e gli identificatori delle interfacce implementate dall'oggetto implements .

implements::get_strong funzione

Recupera un riferimento sicuro all'oggetto winrt::implementsdi questo puntatore. Vedi Riferimenti sicuri e deboli in C++/WinRT. Poiché get_strong è una funzione membro del modello di struct winrt::implements , è possibile chiamarla solo da un oggetto che deriva direttamente o indirettamente da winrt::implements, ad esempio un oggetto C++/WinRT. Per altre informazioni sulla derivazione da winrt::implements ed esempi, vedi Creare API con C++/WinRT.

Sintassi

protected:
    winrt::com_ptr<D> get_strong() noexcept;

Valore restituito

Riferimento sicuro all'oggetto implementaquesto puntatore.

Funzione implements::get_weak

Recupera un riferimento debole al puntatorewinrt::implements. Vedi Riferimenti sicuri e deboli in C++/WinRT. Poiché get_weak è una funzione membro del modello di struct winrt::implements , è possibile chiamarla solo da un oggetto che deriva direttamente o indirettamente da winrt::implements, ad esempio un oggetto C++/WinRT. Per altre informazioni sulla derivazione da winrt::implements ed esempi, vedi Creare API con C++/WinRT.

Sintassi

protected:
    winrt::weak_ref<D> get_weak() noexcept;

Valore restituito

Oggetto weak_ref che rappresenta un riferimento debole al puntatore dell'oggetto implementa.

implementa la funzione::QueryInterface

Recupera il puntatore all'interfaccia implementata dall'oggetto implements , identificato dall'identificatore specificato. Chiama AddRef sul puntatore restituito.

Sintassi

HRESULT __stdcall QueryInterface(winrt::guid const& id, void** object) noexcept;

Valore restituito

Nuovo conteggio dei riferimenti. Questo valore deve essere usato solo a scopo di test.

implementa la funzione::Release

Decrementa il conteggio dei riferimenti per l'interfaccia predefinita dell'oggetto implements .

Sintassi

unsigned long __stdcall Release() noexcept;

Valore restituito

Nuovo conteggio dei riferimenti. Questo valore deve essere usato solo a scopo di test.

implements::operator Windows::Foundation::IInspectable

Converte l'oggetto implementa in un oggetto Windows::Foundation::IInspectable. Questo operatore consente di passare l'oggetto implements a una funzione che prevede un oggetto IInspectable.

Sintassi

operator winrt::Windows::Foundation::IInspectable() const noexcept;

Valore restituito

L'oggetto implementa convertito in windows::Foundation::IInspectable.

Vedi anche