Sdílet prostřednictvím


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í CMyBaseClassrozhraní 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, progidnebo 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