com_interface_entry (C++)
Aggiunge una voce di interfaccia nella mappa COM della classe di destinazione.
Sintassi
[ com_interface_entry(
com_interface_entry) ]
Parametri
com_interface_entry
Stringa contenente il testo effettivo della voce. Per un elenco dei valori possibili, vedere COM_INTERFACE_ENTRY Macro.
Osservazioni:
L'attributo com_interface_entry C++ inserisce il contenuto non risolto di una stringa di caratteri nella mappa dell'interfaccia COM dell'oggetto di destinazione. Se l'attributo viene applicato una volta all'oggetto di destinazione, la voce viene inserita all'inizio della mappa dell'interfaccia esistente. Se l'attributo viene applicato ripetutamente allo stesso oggetto di destinazione, le voci vengono inserite all'inizio della mappa dell'interfaccia nell'ordine in cui vengono ricevute.
Questo attributo richiede che anche l'attributo coclass, progido vi_progid (o un altro attributo che implica uno di questi) sia applicato allo stesso elemento. Se viene usato un qualsiasi attributo, anche gli altri due vengono applicati automaticamente. Ad esempio, se progid
viene applicato vi_progid
e coclass
vengono applicati anche.
Poiché il primo utilizzo di com_interface_entry fa sì che la nuova interfaccia venga inserita all'inizio della mappa dell'interfaccia, deve essere uno dei tipi di COM_INTERFACE_ENTRY seguenti:
COM_INTERFACE_ENTRY
COM_INTERFACE_ENTRY_IID
COM_INTERFACE_ENTRY2
COM_INTERFACE_ENTRY2_IID
Altri utilizzi dell'attributo com_interface_entry possono usare tutti i tipi di COM_INTERFACE_ENTRY supportati.
Questa restrizione è necessaria perché ATL usa la prima voce nella mappa dell'interfaccia come identità IUnknown
, pertanto la voce deve essere un'interfaccia valida. Ad esempio, l'esempio di codice seguente non è valido perché la prima voce nella mappa dell'interfaccia non specifica un'interfaccia COM effettiva.
[ coclass, com_interface_entry =
"COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"
]
class CMyClass
{
};
Esempio
Il codice seguente aggiunge due voci alla mappa dell'interfaccia COM esistente di CMyBaseClass
. Il primo è un'interfaccia standard e il secondo nasconde l'interfaccia IDebugTest
.
// 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
{
};
La mappa degli oggetti COM risultante per CMyBaseClass
è la seguente:
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()
Requisiti
Contesto attributo | Valore |
---|---|
Si applica a | class , struct |
Ripetibile | Sì |
Attributi obbligatori | Uno o più degli elementi seguenti: coclass , progid o vi_progid . |
Attributi non validi | None |
Per altre informazioni sui contesti di attributi, vedere Contesti di attributi.
Vedi anche
Attributi COM
Attributi di classe
Attributi Typedef, Enum, Union e Struct