Condividi tramite


com_interface_entry (C++)

Aggiunge una voce dell'interfaccia nella mappa COM della classe di destinazione.

[ com_interface_entry(  
   com_interface_entry 
 ) ]

Parametri

  • com_interface_entry
    Stringa contenente il testo effettivo della voce. Per un elenco di valori possibili, vedere macro di COM_INTERFACE_ENTRY.

Note

com_interface_entry L'attributo di C++ inserisce il contenuto integrale 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 l'inizio del mapping esistente dell'interfaccia. Se l'attributo viene applicato ripetutamente allo stesso oggetto di destinazione, le voci vengono inserite all'inizio del mapping dell'interfaccia nell'ordine in cui vengono ricevute.

L'attributo richiede che coclasse, progid, o vi_progid attributo o un altro attributo che implica uno di questi) viene applicato anche allo stesso elemento. Se qualsiasi singolo attributo viene utilizzato, gli altri due vengono applicate automaticamente. Ad esempio, se progid viene applicato, vi_progid e coclasse anche applicati.

Poiché il primo utilizzo di com_interface_entry fa sì che la nuova interfaccia per essere inserito all'inizio del mapping dell'interfaccia, deve essere uno dei seguenti tipi di COM_INTERFACE_ENTRY:

  • COM_INTERFACE_ENTRY

  • COM_INTERFACE_ENTRY_IID

  • COM_INTERFACE_ENTRY2

  • COM_INTERFACE_ENTRY2_IID

Utilizzi aggiuntivi di com_interface_entry l'attributo può utilizzare tutti i tipi supportati di COM_INTERFACE_ENTRY.

Questa restrizione è necessaria perché ATL utilizza la prima voce nella mappa dell'interfaccia come identità IUnknown; pertanto, la voce deve essere un'interfaccia valida. Ad esempio, il seguente esempio di codice non è valida perché la prima voce nella mappa dell'interfaccia non specifica una vera e propria interfaccia COM.

[ coclass, com_interface_entry =
    "COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"
]
   class CMyClass
   {
   };

Esempio

Il seguente codice aggiunge due voci nel mapping esistente dell'interfaccia COM CMyBaseClass. il primo è un'interfaccia standard e la seconda nasconde IDebugTest interfaccia.

// 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 risultante di un oggetto COM 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 di attributo

Si applica a

classe, struct

ripetibile

attributi obbligatori

Uno o più dei seguenti elementi: coclasse, progid, o vi_progid.

attributi non validi

Nessuno

per ulteriori informazioni sui contesti di attributo, vedere Associare ai contesti.

Vedere anche

Altre risorse

Attributi COM

Attributi di classe

Attributi Typedef, Enum, Union e Struct

Attributes Samples