Compartir a través de


com_interface_entry (C++)

Agrega una entrada de interfaz en el mapa COM de la clase de destino.

[ com_interface_entry(  
   com_interface_entry 
 ) ]

Parámetros

  • com_interface_entry
    una cadena que contiene el texto real de la entrada. Para obtener una lista de valores posibles, vea macros de COM_INTERFACE_ENTRY.

Comentarios

El atributo de com_interface_entry C++ inserta el contenido integrales de una cadena de caracteres en la asignación de la interfaz 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 la interfaz. Si se aplica el atributo repetidamente al mismo objeto de destino, las entradas se insertan al principio de mapas de interfaz en el orden en que se reciben.

Este atributo requiere que CoClass, ProgID, o el atributo de vi_progid (u otro atributo que implica una de estas) también se aplican al mismo elemento. Si se utiliza cualquier atributo único, los otros dos se aplica automáticamente. por ejemplo, si se aplica ProgID , vi_progid y CoClass también se aplican.

Porque el primer uso de com_interface_entry hace que la nueva interfaz que se va al principio de mapas 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 de com_interface_entry pueden utilizar todos los tipos admitidos de COM_INTERFACE_ENTRY.

Esta restricción es necesaria porque ATL utiliza la primera entrada de la interfaz asignada como la identidad IUnknown; por consiguiente, la entrada debe ser una interfaz válida. Por ejemplo, el siguiente ejemplo de código no es válido porque la primera entrada en el mapa de interfaz no especifica una interfaz 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 la interfaz COM de CMyBaseClass. El primero 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
{
};

El objeto COM resultante asignado 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

Se aplica a

clase, struct

repetible

Atributos necesarios

Uno o más de los siguientes: CoClass, ProgID, o vi_progid.

Atributos no válidos

None

Para obtener más información sobre los contextos de atributos, vea Contextos de atributo.

Vea también

Otros recursos

Atributos COM

Atributos de clase

Typedef, Enum, Union y Struct (Atributos)

Attributes Samples