com_interface_entry (C++)
Přidá položku rozhraní do mapy modelu COM cílové třídy.
Syntaxe
[ com_interface_entry(
com_interface_entry) ]
Parametry
com_interface_entry
Řetězec obsahující skutečný text položky. Seznam možných hodnot najdete v tématu COM_INTERFACE_ENTRY Makra.
Poznámky
Atribut com_interface_entry C++ vloží nepřekrytý obsah řetězce znaků do mapy rozhraní MODELU COM cílového objektu. Pokud se atribut použije jednou pro cílový objekt, položka se vloží na začátek existujícího mapování rozhraní. Pokud se atribut opakovaně použije na stejný cílový objekt, položky se vloží na začátek mapy rozhraní v pořadí, v jakém jsou přijaty.
Tento atribut vyžaduje, aby se na stejný prvek použil také atribut coclass, progid nebo vi_progid (nebo jiný atribut, který napovídá jeden z těchto atributů). Pokud se použije jakýkoli jeden atribut, ostatní dva se automaticky použijí. Pokud se například progid
použije a vi_progid
coclass
použije se také.
Vzhledem k tomu, že první použití com_interface_entry způsobí, že se nové rozhraní vloží na začátek mapy rozhraní, musí to být jeden z následujících typů COM_INTERFACE_ENTRY:
COM_INTERFACE_ENTRY
COM_INTERFACE_ENTRY_IID
COM_INTERFACE_ENTRY2
COM_INTERFACE_ENTRY2_IID
Další použití atributu com_interface_entry může používat všechny podporované typy COM_INTERFACE_ENTRY.
Toto omezení je nezbytné, protože ATL používá první položku v mapě rozhraní jako identitu IUnknown
. Proto musí být položka platným rozhraním. Například následující ukázka kódu je neplatná, protože první položka v mapě rozhraní neurčuje skutečné rozhraní MODELU COM.
[ coclass, com_interface_entry =
"COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"
]
class CMyClass
{
};
Příklad
Následující kód přidá dvě položky do existujícího mapování CMyBaseClass
rozhraní MODELU COM . První je standardní rozhraní a druhý skryje IDebugTest
rozhraní.
// cpp_attr_ref_com_interface_entry.cpp
// compile with: /LD
#define _ATL_ATTRIBUTES
#include "atlbase.h"
#include "atlcom.h"
[module (name ="ldld")];
[ object,
uuid("7dbebed3-d636-4917-af62-c767a720a5b9")]
__interface IDebugTest{};
[ object,
uuid("2875ceac-f94b-4087-8e13-d13dc167fcfc")]
__interface IMyClass{};
[ coclass,
com_interface_entry ("COM_INTERFACE_ENTRY (IMyClass)"),
com_interface_entry ("COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"),
uuid("b85f8626-e76e-4775-b6a0-4826a9e94af2")
]
class CMyClass: public IMyClass, public IDebugTest
{
};
Výsledná mapa CMyBaseClass
objektu MODELU COM je následující:
BEGIN_COM_MAP(CMyClass)
COM_INTERFACE_ENTRY (IMyClass)
COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)
COM_INTERFACE_ENTRY(IMyClass)
COM_INTERFACE_ENTRY2(IDispatch, IMyClass)
COM_INTERFACE_ENTRY(IDebugTest)
COM_INTERFACE_ENTRY(IProvideClassInfo)
END_COM_MAP()
Požadavky
Kontext atributu | Hodnota |
---|---|
Platí pro | class , struct |
Opakovatelný | Ano |
Požadované atributy | Nejméně jedna z následujících možností: coclass , progid nebo vi_progid . |
Neplatné atributy | Nic |
Další informace o kontextech atributů naleznete v tématu Kontexty atributů.
Viz také
COM – atributy
Atributy třídy
Atributy klíčových slov typedef, enum, union a struct