Compartir a través de


com_interface_entry (C++)

Agrega una entrada de interfaz a la asignación de COM de la clase de destino.

Sintaxis

[ com_interface_entry(
  com_interface_entry) ]

Parámetros

com_interface_entry
Una cadena que contiene el texto real de la entrada. Para ver una lista de valores posibles, consulte Macros de COM_INTERFACE_ENTRY.

Comentarios

El atributo de C++ com_interface_entry inserta el contenido no abreviado de una cadena de caracteres en la asignación de la interfaz de COM del objeto de destino. Si el atributo se aplica una vez al objeto de destino, la entrada se inserta al principio de la asignación de interfaz existente. Si el atributo se aplica repetidamente al mismo objeto de destino, las entradas se insertan al principio de la asignación de interfaz en el orden en que se reciben.

Este atributo requiere que el atributo coclass, progido vi_progid (u otro atributo que implique uno de estos) se aplique también al mismo elemento. Si se usa cualquier atributo único, los otros dos se aplicarán automáticamente. Por ejemplo, si se aplica progid, también se aplican vi_progid y coclass.

Dado que el primer uso de com_interface_entry ocasiona que la nueva interfaz se inserte al principio de la asignación de interfaz, debe ser uno de los siguientes tipos de COM_INTERFACE_ENTRY:

  • COM_INTERFACE_ENTRY

  • COM_INTERFACE_ENTRY_IID

  • COM_INTERFACE_ENTRY2

  • COM_INTERFACE_ENTRY2_IID

Los usos adicionales del atributo com_interface_entry pueden usar todos los tipos de COM_INTERFACE_ENTRY admitidos.

Esta restricción es necesaria porque ATL usa la primera entrada de la asignación de interfaz como IUnknown de identidad; por lo tanto, la entrada debe ser una interfaz válida. Por ejemplo, el ejemplo de código siguiente no es válido porque la primera entrada de la asignación de interfaz no especifica una interfaz de COM real.

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

Ejemplo

El código siguiente agrega dos entradas a la asignación de interfaz de COM existente de CMyBaseClass. La primera es una interfaz estándar y la segunda oculta la interfaz de 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 asignación de objetos COM resultante para CMyBaseClass es la siguiente:

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()

Requisitos

Contexto de atributo Valor
Se aplica a class, struct
Reiterativo
Atributos requeridos Uno o varios de los valores siguientes: coclass, progid o vi_progid.
Atributos no válidos Ninguno

Para obtener más información acerca de los contextos de atributo, consulte Contextos de atributo.

Consulte también

Atributos COM
Atributos de clase
Typedef, Enum, Union y Struct (atributos)