Sdílet prostřednictvím


com_interface_entry (C++)

Přidá položku do mapy COM cílové třídy rozhraní.

[ com_interface_entry(  
   com_interface_entry 
 ) ]

Parametry

Poznámky

com_interface_entry C++ atribut nekrácený obsah řetězce znaků vloží do mapy rozhraní COM cílového objektu.Pokud atribut se aplikuje jednou na cílový objekt, položka vložena do začátku existující mapování rozhraní.Pokud atribut je opakovaně stejný cílový objekt, vkládají se položky na začátku mapa rozhraní v pořadí, ve kterém jsou přijaty.

Tento atribut vyžaduje, aby coclass, progid, nebo vi_progid atributu (nebo jiný atribut, který vyplývá z nich) také u téhož prvku.Pokud je použit libovolný jeden atribut, další dvě jsou automaticky použity.Například pokud progid je vi_progid a coclass jsou také použity.

Protože první použití com_interface_entry způsobí nové rozhraní vkládá na začátek mapa rozhraní musí 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í com_interface_entry atribut lze použít všechny podporované typy COM_INTERFACE_ENTRY.

Toto omezení je nezbytné, protože ATL použije první položku v mapě rozhraní jako identita IUnknown; Položka musí být proto platné rozhraní.Následující příklad kódu je například neplatný, protože první položky v mapě rozhraní neurčuje skutečné rozhraní 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í mapování rozhraní modelu COM z CMyBaseClass.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é mapy objektu COM pro CMyBaseClass 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

Atribut kontextu

V aplikacích

Třída,struct

Opakovatelné

Ano

Požadované atributy

Jeden nebo více z následujících: coclass, progid, nebo vi_progid.

Neplatné atributy

Žádná

Další informace o kontextech atribut, viz Kontexty atribut.

Viz také

Další zdroje

COM – atributy

Atributy třídy

Atributy klíčových slov typedef, enum, union a struct

Attributes Samples