WinRT :: Implements, modèle deC++struct (/WinRT)winrt::implements struct template (C++/WinRT)

Il s’agit de la base à partir C++ de laquelle vos propres implémentations de/WinRT (des classes d’exécution et des fabriques d’activation) dérivent directement ou indirectement.This is the base from which your own C++/WinRT implementations (of runtime classes and activation factories) directly or indirectly derive. Il implémente une ou plusieurs interfaces Windows Runtime (que vous spécifiez en tant que paramètres de type) et fournit également des implémentations efficaces de IUnknown, IInspectable, IAgileObject, IWeakReferenceSourceet d’autres.It implements one or more Windows Runtime interfaces (which you specify to it as type parameters), and it also provides efficient implementations of IUnknown, IInspectable, IAgileObject, IWeakReferenceSource, and others.

Notes

Pour plus d’informations sur la dérivation à partir de ce type, ainsi que des exemples, consultez créer des API C++avec/WinRT.For more info about deriving from this type, and examples, see Author APIs with C++/WinRT.

Points d’extension sur WinRT :: ImplementsExtension points on winrt::implements

WinRT :: Implements a des points d’extension qui vous permettent de différer la destruction de vos types d’implémentation, d’interroger en toute sécurité pendant la destruction et de raccorder l’entrée et la sortie de vos méthodes projetées.winrt::implements has extension points that allow you to defer destruction of your implementation types, to safely query during destruction, and to hook the entry into and exit from your projected methods. Voici les noms des points d’extension, ainsi que des liens vers des informations et des exemples de code.Here are the names of the extension points, together with links to details and code examples.

Types de marqueurMarker types

Le modèle de struct Implements prend en charge plusieurs types de marqueurs (tels que non_agile, no_weak_refet static_lifetime pour les fabriques).The implements struct template supports several marker types (such as non_agile, no_weak_ref, and static_lifetime for factories). Ces types de marqueurs remplacent le comportement par défaut.These marker types override default behavior. Nous nous attendons à ce que ces derniers ne soient rarement utilisés ; les valeurs par défaut sont suffisantes pour presque tous les cas.We expect that these will be only rarely used; the defaults are sufficient for almost all cases. Un type de marqueur peut apparaître n’importe où dans la liste d’interfaces, qui est le Pack de paramètres variadiques.A marker type can appear anywhere in the interface list, which is the variadic parameter pack.

Ce premier exemple s’applique lorsque vous dérivez directement de Implements.This first example applies when you derive directly from implements.

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

L’exemple suivant est utilisé lorsque vous créez une classe d’exécution.This next example is for when you're authoring a runtime class.

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

SyntaxeSyntax

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

Paramètres de modèleTemplate parameters

typename D votre nom de type dérivé.typename D Your derived type name.

typename... I n’importe quel nombre d’interfaces à implémenter.typename... I Any number of interfaces to implement.

ExempleExample

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

Configuration requiseRequirements

SDK minimal pris en charge : SDK Windows de la version 10.0.17134.0 (Windows 10, version 1803)Minimum supported SDK: Windows SDK version 10.0.17134.0 (Windows 10, version 1803)

Espace de noms : WinRTNamespace: winrt

L' en-tête % WindowsSdkDir% inclut<WindowsTargetPlatformVersion > \cppwinrt\winrt\base.h (inclus par défaut)Header %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (included by default)

Fonctions membresMember functions

FonctionFunction DescriptionDescription
Implements :: AddRef, fonctionimplements::AddRef function Incrémente le décompte de références pour l’interface par défaut de l’objet Implements .Increments the reference count for the default interface of the implements object.
Implements :: find_inspectable, fonctionimplements::find_inspectable function TBDTBD
Implements :: find_interface, fonctionimplements::find_interface function Pointeur vers l’interface implémentée par l’objet implémente , identifié par l’identificateur spécifié ; n’appelle pas AddRef.The pointer to the interface implemented by the implements object, identified by the specified identifier; doesn't call AddRef.
Implements :: get_local_iids, fonctionimplements::get_local_iids function Récupère un tuple à deux éléments contenant les identificateurs des interfaces implémentées par l’objet Implements .Retrieves a two-element tuple containing the identifiers of the interfaces that are implemented by the implements object.
Implements :: get_strong, fonctionimplements::get_strong function Récupère une référence forte au pointeur This de l’objet Implements .Retrieves a strong reference to the implements object's this pointer.
implements::get_weak, fonctionimplements::get_weak function Récupère une référence faible au pointeur This de l’objet Implements .Retrieves a weak reference to the implements object's this pointer.
Implements :: QueryInterface, fonctionimplements::QueryInterface function Récupère le pointeur vers l’interface implémentée par l’objet Implements , identifié par l’identificateur spécifié ; appelle AddRef.Retrieves the pointer to the interface implemented by the implements object, identified by the specified identifier; calls AddRef.
implémente :: Release, fonctionimplements::Release function Décrémente le décompte de références pour l’interface par défaut de l’objet Implements .Decrements the reference count for the default interface of the implements object.

Opérateurs membresMember operators

OpérateurOperator DescriptionDescription
implémente :: Operator Windows :: Foundation :: IInspectableimplements::operator Windows::Foundation::IInspectable Convertit l’objet Implements en Windows :: Foundation :: IInspectable.Converts the implements object to a Windows::Foundation::IInspectable.

Implements :: AddRef, fonctionimplements::AddRef function

Incrémente le décompte de références pour l’interface par défaut de l’objet Implements .Increments the reference count for the default interface of the implements object.

SyntaxeSyntax

unsigned long __stdcall AddRef() noexcept;

Valeur de retourReturn value

Nouveau décompte de références.The new reference count. Cette valeur est destinée à être utilisée uniquement à des fins de test.This value is intended to be used only for test purposes.

Implements :: find_inspectable, fonctionimplements::find_inspectable function

Récupère le pointeur vers l’interface IInspectable implémentée par l’objet Implements .Retrieves the pointer to the IInspectable interface implemented by the implements object. N’appelle pas AddRef sur le pointeur qu’il retourne.Does not call AddRef on the pointer that it returns. Cette fonction vous permet de passer l’objet Implements à une fonction qui attend un IInspectable.This function allows you to pass the implements object to a function that expects an IInspectable.

SyntaxeSyntax

::IInspectable* find_inspectable() const noexcept override;

Valeur de retourReturn value

Pointeur vers l’interface IInspectable implémentée par l’objet Implements .The pointer to the IInspectable interface implemented by the implements object.

Implements :: find_interface, fonctionimplements::find_interface function

Récupère le pointeur vers l’interface implémentée par l’objet Implements , identifié par l’identificateur spécifié.Retrieves the pointer to the interface implemented by the implements object, identified by the specified identifier. N’appelle pas AddRef sur le pointeur qu’il retourne.Does not call AddRef on the pointer that it returns.

SyntaxeSyntax

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

Valeur de retourReturn value

Pointeur vers l’interface implémentée par l’objet implémente , identifié par l’identificateur spécifié.The pointer to the interface implemented by the implements object, identified by the specified identifier.

Implements :: get_local_iids, fonctionimplements::get_local_iids function

Récupère un tuple à deux éléments contenant les identificateurs des interfaces implémentées par l’objet Implements .Retrieves a two-element tuple containing the identifiers of the interfaces that are implemented by the implements object.

SyntaxeSyntax

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

Valeur de retourReturn value

Tuple à deux éléments contenant les identificateurs des interfaces implémentées par l’objet Implements .A two-element tuple containing the identifiers of the interfaces that are implemented by the implements object.

Implements :: get_strong, fonctionimplements::get_strong function

Récupère une référence forte au pointeur This de l’objet WinRT :: Implements .Retrieves a strong reference to the winrt::implements object's this pointer. Consultez Références fortes et faibles en C++/WinRT.See Strong and weak references in C++/WinRT. Étant donné que get_strong est une fonction membre du modèle de struct WinRT :: Implements , vous pouvez l’appeler uniquement à partir d’un objet qui dérive directement ou indirectement de WinRT :: Implements, tel qu’un C++objet/WinRT.Because get_strong is a member function of the winrt::implements struct template, you can call it only from an object that directly or indirectly derives from winrt::implements, such as a C++/WinRT object. Pour plus d’informations sur la dérivation à partir de winrt::implements, et pour obtenir des exemples, consultez Créer des API avec C++/WinRT.For more info about deriving from winrt::implements, and examples, see Author APIs with C++/WinRT.

SyntaxeSyntax

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

Valeur de retourReturn value

Une référence forte au pointeur This de l’objet Implements .A strong reference to the implements object's this pointer.

Fonction implements::get_weakimplements::get_weak function

Récupère une référence faible au pointeur This de l’objet WinRT :: Implements .Retrieves a weak reference to the winrt::implements object's this pointer. Consultez Références fortes et faibles en C++/WinRT.See Strong and weak references in C++/WinRT. Étant donné que get_weak est une fonction membre du modèle de struct WinRT :: Implements , vous pouvez l’appeler uniquement à partir d’un objet qui dérive directement ou indirectement de WinRT :: Implements, tel qu’un C++objet/WinRT.Because get_weak is a member function of the winrt::implements struct template, you can call it only from an object that directly or indirectly derives from winrt::implements, such as a C++/WinRT object. Pour plus d’informations sur la dérivation à partir de winrt::implements, et pour obtenir des exemples, consultez Créer des API avec C++/WinRT.For more info about deriving from winrt::implements, and examples, see Author APIs with C++/WinRT.

SyntaxeSyntax

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

Valeur de retourReturn value

Objet weak_ref représentant une référence faible au pointeur This de l’objet Implements .A weak_ref object representing a weak reference to the implements object's this pointer.

Implements :: QueryInterface, fonctionimplements::QueryInterface function

Récupère le pointeur vers l’interface implémentée par l’objet Implements , identifié par l’identificateur spécifié.Retrieves the pointer to the interface implemented by the implements object, identified by the specified identifier. Appelle AddRef sur le pointeur qu’il retourne.Calls AddRef on the pointer that it returns.

SyntaxeSyntax

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

Valeur de retourReturn value

Nouveau décompte de références.The new reference count. Cette valeur est destinée à être utilisée uniquement à des fins de test.This value is intended to be used only for test purposes.

implémente :: Release, fonctionimplements::Release function

Décrémente le décompte de références pour l’interface par défaut de l’objet Implements .Decrements the reference count for the default interface of the implements object.

SyntaxeSyntax

unsigned long __stdcall Release() noexcept;

Valeur de retourReturn value

Nouveau décompte de références.The new reference count. Cette valeur est destinée à être utilisée uniquement à des fins de test.This value is intended to be used only for test purposes.

implémente :: Operator Windows :: Foundation :: IInspectableimplements::operator Windows::Foundation::IInspectable

Convertit l’objet Implements en Windows :: Foundation :: IInspectable.Converts the implements object to a Windows::Foundation::IInspectable. Cet opérateur vous permet de passer l’objet Implements à une fonction qui attend un IInspectable.This operator allows you to pass the implements object to a function that expects an IInspectable.

SyntaxeSyntax

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

Valeur de retourReturn value

Implémente l’objet converti en Windows :: Foundation :: IInspectable.The implements object converted to a Windows::Foundation::IInspectable.

Voir aussiSee also