Compartilhar via


com_interface_entry (C++)

Adiciona uma entrada de interface para o mapa COM da classe destino.

[ com_interface_entry( 
   com_interface_entry
 ) ]

Parâmetros

  • com_interface_entry
    Uma seqüência de caracteres que contém o texto real da entrada.Para obter uma lista dos valores possíveis, consulte Macros de COM_INTERFACE_ENTRY.

Comentários

O com_interface_entry atributo C++ insere o conteúdo de unabridged de uma seqüência de caracteres para o mapa de interface COM o objeto de destino.Se o atributo é aplicado uma vez para o objeto de destino, a entrada é inserida no início do mapa interface existente.Se o atributo é aplicado repetidamente ao mesmo objeto de destino, as entradas são inseridas no início do mapa da interface na ordem em que são recebidos.

Este atributo requer que o coclass, progid, ou vi_progid atributo (ou outro atributo implica um deles) também ser aplicadas ao mesmo elemento.Se qualquer atributo único for usado, as outras duas são aplicadas automaticamente.Por exemplo, se progid for aplicada, vi_progid e coclass também são aplicadas.

Porque o primeiro uso da com_interface_entry faz com que a nova interface a ser inserido no início do mapa de interface, ele deve ser um dos seguintes tipos de COM_INTERFACE_ENTRY:

  • COM_INTERFACE_ENTRY

  • COM_INTERFACE_ENTRY_IID

  • COM_INTERFACE_ENTRY2

  • COM_INTERFACE_ENTRY2_IID

Usos adicionais da com_interface_entry atributo pode usar tipos de todas as COM_INTERFACE_ENTRY.

Essa restrição é necessária porque o ATL usa a primeira entrada no mapa de interface como a identidade IUnknown; Portanto, a entrada deve ser uma interface válida.Por exemplo, o exemplo de código a seguir é inválido porque a primeira entrada no mapa de interface não especifica uma interface de COM real.

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

Exemplo

O código a seguir adiciona duas entradas para o mapa existente COM interface de CMyBaseClass.A primeira é uma interface padrão e o segundo oculta o IDebugTest interface.

// 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
{
};

O mapa de objeto COM resultante de CMyBaseClass é o seguinte:

    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

classe,struct

Reproduzíveis

Sim

Atributos obrigatórios

Um ou mais das seguintes opções: coclass, progid, ou vi_progid.

Atributos inválidos

Nenhum

Para obter mais informações sobre os contextos de atributo, consulte Atributo contextos.

Consulte também

Outros recursos

Atributos COM

Atributos de classe

TypeDef, Enum, união e atributos Struct

Attributes Samples