Makra map objektů
Tato makra definují mapy objektů a položky.
Název | Popis |
---|---|
DECLARE_OBJECT_DESCRIPTION | Umožňuje zadat textový popis objektu třídy, který bude zadán do mapy objektu. |
OBJECT_ENTRY_AUTO | Zadá objekt ATL do mapy objektů, aktualizuje registr a vytvoří instanci objektu. |
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO | Umožňuje určit, že objekt by měl být registrován a inicializován, ale neměl by být externě creatable prostřednictvím CoCreateInstance . |
Požadavky
Hlavička: atlcom.h
DECLARE_OBJECT_DESCRIPTION
Umožňuje zadat textový popis objektu třídy.
DECLARE_OBJECT_DESCRIPTION( x )
Parametry
x
[v] Popis objektu třídy.
Poznámky
AtL zadá tento popis do mapy objektů prostřednictvím OBJECT_ENTRY_AUTO makra.
DECLARE_OBJECT_DESCRIPTION implementuje GetObjectDescription
funkci, kterou můžete použít k přepsání CComCoClass::GetObjectDescription metoda.
Funkce GetObjectDescription
je volána pomocí IComponentRegistrar::GetComponents
. IComponentRegistrar
je rozhraní automation, které umožňuje zaregistrovat a zrušit registraci jednotlivých komponent v knihovně DLL. Když vytvoříte objekt registrátora komponent pomocí Průvodce projektem ATL, průvodce automaticky implementuje IComponentRegistrar
rozhraní. IComponentRegistrar
obvykle používá Microsoft Transaction Server.
Další informace o Průvodci projektem ATL naleznete v článku Vytvoření projektu ATL.
Příklad
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
Zadá objekt ATL do mapy objektů, aktualizuje registr a vytvoří instanci objektu.
OBJECT_ENTRY_AUTO( clsid, class )
Parametry
clsid
[v] CLSID třídy COM implementované třídou C++ pojmenovanou třídou.
class
[v] Název třídy C++ implementované třídy COM reprezentované clsid.
Poznámky
Makra pro zadávání objektů jsou v projektu umístěna v globálním oboru, aby poskytovala podporu pro registraci, inicializaci a vytvoření třídy.
OBJECT_ENTRY_AUTO zadá ukazatele na funkce třídy tvůrce a funkce třídy tvůrce třídy CreateInstance
pro tento objekt do automaticky generované mapy objektů ATL. Při CAtlComModule::RegisterServer je volána, aktualizuje systémový registr pro každý objekt v mapě objektu.
Následující tabulka popisuje, jak se informace přidané do mapy objektu získávají z třídy zadané jako druhý parametr tohoto makra.
Informace pro | Získáno z |
---|---|
Registrace modelu COM | Makra registru |
Vytváření objektů pro vytváření tříd | Makra objektu pro vytváření tříd |
Vytvoření instance | Agregační makra |
Registrace kategorií součástí | Makra kategorií |
Inicializace a vyčištění na úrovni třídy | ObjectMain |
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO
Umožňuje určit, že objekt by měl být registrován a inicializován, ale neměl by být externě creatable prostřednictvím CoCreateInstance
.
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO( clsid, class )
Parametry
clsid
[v] CLSID třídy COM implementované třídou C++ pojmenovanou třídou.
class
[v] Název třídy C++ implementované třídy COM reprezentované clsid.
Poznámky
Makra pro zadávání objektů jsou v projektu umístěna v globálním oboru, aby poskytovala podporu pro registraci, inicializaci a vytvoření třídy.
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO umožňuje určit, že objekt by měl být registrován a inicializován (viz OBJECT_ENTRY_AUTO další informace), ale neměl by být creatable via CoCreateInstance
.