Condividi tramite


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
Attributi obbligatori Uno o più degli elementi seguenti: coclass, progido 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