Macros de mappage d’objets
Ces macros définissent des mappages d’objets et des entrées.
Nom | Description |
---|---|
DECLARE_OBJECT_DESCRIPTION | Vous permet de spécifier la description de texte d’un objet de classe, qui sera entrée dans le mappage d’objets. |
OBJECT_ENTRY_AUTO | Entre un objet ATL dans le mappage d’objets, met à jour le Registre et crée une instance de l’objet. |
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO | Vous pouvez spécifier que l'objet doit être enregistré et initialisé, mais il ne doit pas pouvoir être créé en externe via CoCreateInstance . |
Spécifications
En-tête : atlcom.h
DECLARE_OBJECT_DESCRIPTION
Vous permet de spécifier une description de texte pour votre objet de classe.
DECLARE_OBJECT_DESCRIPTION( x )
Paramètres
x
[in] Description de l’objet de classe.
Notes
ATL entre cette description dans le mappage d’objets via la macro OBJECT_ENTRY_AUTO .
DECLARE_OBJECT_DESCRIPTION implémente une GetObjectDescription
fonction, que vous pouvez utiliser pour remplacer la méthode CComCoClass ::GetObjectDescription .
La GetObjectDescription
fonction est appelée par IComponentRegistrar::GetComponents
. IComponentRegistrar
est une interface Automation qui vous permet d’inscrire et de désinscrire des composants individuels dans une DLL. Lorsque vous créez un objet De bureau d’enregistrement de composants avec l’Assistant Projet ATL, l’Assistant implémente automatiquement l’interface IComponentRegistrar
. IComponentRegistrar
est généralement utilisé par Microsoft Transaction Server.
Pour plus d’informations sur l’Assistant Projet ATL, consultez l’article Création d’un projet ATL.
Exemple
class ATL_NO_VTABLE CMyDescribedClass :
public CComObjectRoot,
public CComCoClass<CMyDescribedClass, &CLSID_MyDescribedClass>
{
public:
CMyDescribedClass()
{
}
// Override CComCoClass::GetObjectDescription
DECLARE_OBJECT_DESCRIPTION("My Described Object 1.0")
};
OBJECT_ENTRY_AUTO
Entre un objet ATL dans le mappage d’objets, met à jour le Registre et crée une instance de l’objet.
OBJECT_ENTRY_AUTO( clsid, class )
Paramètres
clsid
[in] CLSID d’une classe COM implémentée par la classe C++ nommée.
class
[in] Nom de la classe C++ implémentant la classe COM représentée par clsid.
Notes
Les macros d'entrées d'objet sont placées au niveau de la portée globale dans le projet pour assurer la prise en charge de l'inscription, de l'initialisation et de la création d'une classe.
OBJECT_ENTRY_AUTO entre les pointeurs de fonction de la classe créateur et les fonctions de classe de créateur de fabrique de classes CreateInstance
pour cet objet dans la carte d’objets ATL générée automatiquement. Quand CAtlComModule ::RegisterServer est appelé, il met à jour le registre système pour chaque objet dans le mappage d’objets.
Le tableau ci-dessous décrit comment les informations ajoutées au mappage d’objets sont obtenues à partir de la classe donnée en tant que deuxième paramètre à cette macro.
Informations pour | Obtenu à partir de |
---|---|
Inscription de COM | Macros de Registre |
Création d’une fabrique de classes | Macros de fabrique de classes |
Création d’instance | Macros d’agrégation |
Inscription de catégorie de composant | Macros de catégorie |
Initialisation et nettoyage au niveau de la classe | ObjectMain |
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO
Vous pouvez spécifier que l'objet doit être enregistré et initialisé, mais il ne doit pas pouvoir être créé en externe via CoCreateInstance
.
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO( clsid, class )
Paramètres
clsid
[in] CLSID d’une classe COM implémentée par la classe C++ nommée.
class
[in] Nom de la classe C++ implémentant la classe COM représentée par clsid.
Notes
Les macros d'entrées d'objet sont placées au niveau de la portée globale dans le projet pour assurer la prise en charge de l'inscription, de l'initialisation et de la création d'une classe.
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO vous permet de spécifier qu’un objet doit être inscrit et initialisé (voir OBJECT_ENTRY_AUTO pour plus d’informations), mais il ne doit pas être créatable via CoCreateInstance
.