Macro della mappa oggetti
Queste macro definiscono le mappe e le voci degli oggetti.
Nome | Descrizione |
---|---|
DECLARE_OBJECT_DESCRIPTION | Consente di specificare la descrizione del testo di un oggetto classe, che verrà immessa nella mappa degli oggetti. |
OBJECT_ENTRY_AUTO | Immette un oggetto ATL nella mappa oggetti, aggiorna il Registro di sistema e crea un'istanza dell'oggetto . |
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO | Consente di specificare che l'oggetto deve essere registrato e inizializzato, ma non deve essere creabile esternamente tramite CoCreateInstance . |
Requisiti
Intestazione: atlcom.h
DECLARE_OBJECT_DESCRIPTION
Consente di specificare una descrizione di testo per l'oggetto classe.
DECLARE_OBJECT_DESCRIPTION( x )
Parametri
x
[in] Descrizione dell'oggetto classe.
Osservazioni:
ATL immette questa descrizione nella mappa oggetti tramite la macro OBJECT_ENTRY_AUTO .
DECLARE_OBJECT_DESCRIPTION implementa una GetObjectDescription
funzione, che è possibile usare per eseguire l'override del metodo CComCoClass::GetObjectDescription .
La GetObjectDescription
funzione viene chiamata da IComponentRegistrar::GetComponents
. IComponentRegistrar
è un'interfaccia di automazione che consente di registrare e annullare la registrazione di singoli componenti in una DLL. Quando si crea un oggetto Registrar del componente con la Creazione guidata progetto ATL, la procedura guidata implementerà automaticamente l'interfaccia IComponentRegistrar
. IComponentRegistrar
viene in genere utilizzato da Microsoft Transaction Server.
Per altre informazioni sulla Creazione guidata progetto ATL, vedere l'articolo Creazione di un progetto ATL.
Esempio
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
Immette un oggetto ATL nella mappa oggetti, aggiorna il Registro di sistema e crea un'istanza dell'oggetto .
OBJECT_ENTRY_AUTO( clsid, class )
Parametri
clsid
[in] CLSID di una classe COM implementata dalla classe C++ denominata .
class
[in] Nome della classe C++ che implementa la classe COM rappresentata da clsid.
Osservazioni:
Le macro di voci di oggetto vengono inserite in ambito globale nel progetto per fornire supporto per la registrazione, l'inizializzazione e la creazione di una classe.
OBJECT_ENTRY_AUTO immette i puntatori a funzione della classe creatore e le funzioni della classe CreateInstance
creator di class factory per questo oggetto nella mappa oggetti ATL generata automaticamente. Quando viene chiamato CAtlComModule::RegisterServer , aggiorna il Registro di sistema per ogni oggetto nella mappa degli oggetti.
Nella tabella seguente viene descritto il modo in cui le informazioni aggiunte alla mappa oggetti vengono ottenute dalla classe specificata come secondo parametro di questa macro.
Informazioni per | Ottenuto da |
---|---|
Registrazione COM | Macro del Registro di sistema |
Creazione della factory di classi | Macro di Class Factory |
Creazione di istanze | Macro di aggregazione |
Registrazione della categoria di componenti | Macro di categoria |
Inizializzazione e pulizia a livello di classe | ObjectMain |
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO
Consente di specificare che l'oggetto deve essere registrato e inizializzato, ma non deve essere creabile esternamente tramite CoCreateInstance
.
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO( clsid, class )
Parametri
clsid
[in] CLSID di una classe COM implementata dalla classe C++ denominata .
class
[in] Nome della classe C++ che implementa la classe COM rappresentata da clsid.
Osservazioni:
Le macro di voci di oggetto vengono inserite in ambito globale nel progetto per fornire supporto per la registrazione, l'inizializzazione e la creazione di una classe.
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO consente di specificare che un oggetto deve essere registrato e inizializzato (vedere OBJECT_ENTRY_AUTO per altre informazioni), ma non deve essere creato tramite CoCreateInstance
.