Freigeben über


winrt::implements-Strukturvorlage (C++/WinRT)

Dies ist die Basis, von der ihre eigenen C++/WinRT-Implementierungen (von Laufzeitklassen und Aktivierungsfabriken) direkt oder indirekt abgeleitet werden. Es implementiert eine oder mehrere Windows-Runtime Schnittstellen (die Sie als Typparameter angeben) und bietet außerdem effiziente Implementierungen von IUnknown, IInspectable, IAgileObject, IWeakReferenceSource und anderen.

Hinweis

Weitere Informationen zum Ableiten von diesem Typ und Beispiele finden Sie unter Erstellen von APIs mit C++/WinRT.

Erweiterungspunkte auf winrt::implements

winrt::implements verfügt über Erweiterungspunkte , mit denen Sie die Zerstörung Ihrer Implementierungstypen verzögern, während der Zerstörung sicher Abfragen durchführen und den Einstieg in ihre projizierten Methoden und den Exit aus ihren projizierten Methoden einbinden können. Hier finden Sie die Namen der Erweiterungspunkte, zusammen mit Links zu Details und Codebeispielen.

Markertypen

Die Strukturvorlage implementiert mehrere Markertypen, die zum Überschreiben des Standardverhaltens verwendet werden. Wir gehen davon aus, dass diese nur selten verwendet werden; die Standardwerte reichen für fast alle Fälle aus. Ein Markertyp kann überall in der Schnittstellenliste angezeigt werden, d. h. das variatische Parameterpaket.

Die folgenden Markertypen werden von Implementierungen unterstützt:

Dieses erste Beispiel gilt, wenn Sie direkt von Implementierungen ableiten.

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

Dieses nächste Beispiel gilt, wenn Sie eine Laufzeitklasse erstellen.

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

Syntax

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

Vorlagenparameter

typename D Ihr abgeleiteter Typname.

typename... I Eine beliebige Anzahl von zu implementierenden Schnittstellen sowie alle gewünschten Markertypen.

Standardmäßig werden Schnittstellen, die von IInspectable abgeleitet werden, von der Implementierung der IInspectable::GetIids-Methode gemeldet. Verwenden Sie die cloaked Markervorlage , um dies zu unterdrücken.

Beispiel

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

Anforderungen

Mindestens unterstütztes SDK: Windows SDK Version 10.0.17134.0 (Windows 10, Version 1803)

Namespace: winrt

Header: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (standardmäßig enthalten)

Memberfunktionen

Funktion BESCHREIBUNG
implements::AddRef function Erhöht die Verweisanzahl für die Standardschnittstelle des implements-Objekts .
implements::find_inspectable-Funktion TBD
implementiert::find_interface-Funktion Der Zeiger auf die Schnittstelle, die vom implementierten Objekt implementiert wird, das durch den angegebenen Bezeichner identifiziert wird; ruft AddRef nicht auf.
implements::get_local_iids-Funktion Ruft ein Tupel mit zwei Elementen ab, das die Bezeichner der Schnittstellen enthält, die vom implements-Objekt implementiert werden.
implementiert::get_strong-Funktion Ruft einen starken Verweis auf den Zeiger des implementierten Objekts ab.
implements::get_weak-Funktion Ruft einen schwachen Verweis auf diesen Zeiger des Implementiertobjekts ab.
implements::QueryInterface-Funktion Ruft den Zeiger auf die Schnittstelle ab, die vom implementierten Objekt implementiert wird, das durch den angegebenen Bezeichner identifiziert wird. ruft AddRef auf.
implementiert::Release-Funktion Verringert die Verweisanzahl für die Standardschnittstelle des implements-Objekts .

Memberoperatoren

Operator BESCHREIBUNG
implementiert::operator Windows::Foundation::IInspectable Konvertiert das implementierte Objekt in ein Windows::Foundation::IInspectable.

Datenmember

Datenelement BESCHREIBUNG
m_inner Greift ggf. auf das zusammengesetzte Objekt zu. Weitere Informationen finden Sie unter Runtime-Klassenableitung.

implements::AddRef function

Erhöht die Verweisanzahl für die Standardschnittstelle des implements-Objekts .

Syntax

unsigned long __stdcall AddRef() noexcept;

Rückgabewert

Die neue Verweisanzahl. Dieser Wert ist nur für Testzwecke vorgesehen.

implements::find_inspectable-Funktion

Ruft den Zeiger auf die vom implements-Objekt implementierteIInspectable-Schnittstelle ab. Ruft AddRef nicht auf dem zurückgegebenen Zeiger auf. Mit dieser Funktion können Sie das implements-Objekt an eine Funktion übergeben, die eine IInspectable erwartet.

Syntax

::IInspectable* find_inspectable() const noexcept override;

Rückgabewert

Der Zeiger auf die IInspectable-Schnittstelle , die vom implements-Objekt implementiert wird.

implementiert::find_interface-Funktion

Ruft den Zeiger auf die Schnittstelle ab, die vom implementierungs-Objekt implementiert wird, das durch den angegebenen Bezeichner identifiziert wird. Ruft AddRef nicht auf dem zurückgegebenen Zeiger auf.

Syntax

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

Rückgabewert

Der Zeiger auf die Schnittstelle, die vom implementierten Objekt implementiert wird, das durch den angegebenen Bezeichner identifiziert wird.

implements::get_local_iids-Funktion

Ruft ein Tupel mit zwei Elementen ab, das die Bezeichner der Schnittstellen enthält, die vom implements-Objekt implementiert werden. "Cloaked"-Schnittstellen sind nicht enthalten.

Syntax

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

Rückgabewert

Ein Tupel mit zwei Elementen, das die Anzahl und Bezeichner der Schnittstellen enthält, die vom implements-Objekt implementiert werden.

implementiert::get_strong-Funktion

Ruft einen starken Verweis auf diesen Zeiger des winrt::implements-Objekts ab. Siehe Starke und schwache Verweise in C++/WinRT. Da get_strong eine Memberfunktion der Strukturvorlage winrt::implements ist, können Sie sie nur von einem Objekt aufrufen, das direkt oder indirekt von winrt::implements abgeleitet ist, z. B. ein C++/WinRT-Objekt. Weitere Informationen für das Ableiten aus winrt::implements und Beispiele finden Sie unter Erstellen von APIs mit C++/WinRT.

Syntax

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

Rückgabewert

Ein starker Verweis auf den implementiertdiesen Zeiger des Objekts.

implements::get_weak-Funktion

Ruft einen schwachen Verweis auf den zeiger des winrt::implements-Objekts ab. Siehe Starke und schwache Verweise in C++/WinRT. Da get_weak eine Memberfunktion der winrt::implements-Strukturvorlage ist, können Sie sie nur von einem Objekt aufrufen, das direkt oder indirekt von winrt::implements abgeleitet ist, z. B. ein C++/WinRT-Objekt. Weitere Informationen für das Ableiten aus winrt::implements und Beispiele finden Sie unter Erstellen von APIs mit C++/WinRT.

Syntax

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

Rückgabewert

Ein weak_ref -Objekt, das einen schwachen Verweis auf den -Zeiger des -Objekts darstellt.

implements::QueryInterface-Funktion

Ruft den Zeiger auf die Schnittstelle ab, die vom implements-Objekt implementiert wird, das durch den angegebenen Bezeichner identifiziert wird. Ruft AddRef für den zurückgegebenen Zeiger auf.

Syntax

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

Rückgabewert

Die neue Verweisanzahl. Dieser Wert ist nur für Testzwecke vorgesehen.

implements::Release-Funktion

Verringert die Verweisanzahl für die Standardschnittstelle des implements-Objekts .

Syntax

unsigned long __stdcall Release() noexcept;

Rückgabewert

Die neue Verweisanzahl. Dieser Wert ist nur für Testzwecke vorgesehen.

implements::operator Windows::Foundation::IInspectable

Konvertiert das implementierungs-Objekt in ein Windows::Foundation::IInspectable-Objekt. Mit diesem Operator können Sie das implements-Objekt an eine Funktion übergeben, die eine IInspectable erwartet.

Syntax

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

Rückgabewert

Der implementiert das -Objekt, das in ein Windows::Foundation::IInspectable konvertiert wird.

Siehe auch