com_interface_entry (C++)
Přidá položku do mapy COM cílové třídy rozhraní.
[ com_interface_entry(
com_interface_entry
) ]
Parametry
- com_interface_entry
Řetězec obsahující vlastní text položky.Seznam možných hodnot, viz Makra COM_INTERFACE_ENTRY.
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.