Macros do Mapa de Objetos

Essas macros definem mapas de objetos e entradas.

Nome Descrição
DECLARE_OBJECT_DESCRIPTION Permite que você especifique a descrição de texto de um objeto de classe, que será inserida no mapa do objeto.
OBJECT_ENTRY_AUTO Insere um objeto ATL no mapa do objeto, atualiza o registro e cria uma instância do objeto.
OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO Permite que você especifique que o objeto deve ser registrado e inicializado, mas ele não deve ser criado externamente por meio de CoCreateInstance.

Requisitos

Cabeçalho: atlcom.h

DECLARE_OBJECT_DESCRIPTION

Permite que você especifique uma descrição de texto para o objeto de classe.

DECLARE_OBJECT_DESCRIPTION( x )

Parâmetros

x
[entrada] A descrição do objeto de classe.

Comentários

A ATL insere essa descrição no mapa do objeto por meio da macro OBJECT_ENTRY_AUTO.

DECLARE_OBJECT_DESCRIPTION implementa uma função GetObjectDescription, que você pode usar para substituir o método CComCoClass::GetObjectDescription.

A função GetObjectDescription é denominada por IComponentRegistrar::GetComponents. IComponentRegistrar é uma interface do Automação que permite registrar e cancelar o registro de componentes individuais em uma DLL. Ao criar um objeto do Registrador de Componentes com o Assistente de Projeto da ATL, o assistente implementará automaticamente a interface IComponentRegistrar. IComponentRegistrar normalmente é usado pelo Microsoft Transaction Server.

Para obter mais informações sobre o Assistente de Projeto da ATL, confira o artigo Criar um projeto da ATL.

Exemplo

class ATL_NO_VTABLE CMyDescribedClass :
   public CComObjectRoot,
   public CComCoClass<CMyDescribedClass, &CLSID_MyDescribedClass>
{
public:
   CMyDescribedClass()
   {
   }

   // Override CComCoClass::GetObjectDescription
   DECLARE_OBJECT_DESCRIPTION("My Described Object 1.0")
};

OBJECT_ENTRY_AUTO

Insere um objeto ATL no mapa do objeto, atualiza o registro e cria uma instância do objeto.

OBJECT_ENTRY_AUTO( clsid, class )

Parâmetros

clsid
[entrada] O CLSID de uma classe COM implementada pela classe nomeada C++.

class
[entrada] O nome da classe C++ que implementa a classe COM representada pelo clsid.

Comentários

As macros de entrada de objeto são colocadas no escopo global no projeto para fornecer suporte para o registro, inicialização e criação de uma classe.

OBJECT_ENTRY_AUTO insere os ponteiros de função de classe do criador e as funções CreateInstance de classe do criador de fábrica de classe, para este objeto no mapa de objeto da ATL gerado automaticamente. Quando CAtlComModule::RegisterServer é chamado, ele atualiza o registro do sistema para cada objeto no mapa do objeto.

A tabela a seguir descreve como as informações adicionadas ao mapa de objetos são obtidas da classe fornecida como o segundo parâmetro para essa macro.

Informações para Obtido de
Registro COM Macros de Registro
Criação de fábrica de classes Macros de Fábrica de Classes
Criação de instância Macros de Agregação
Registro de categoria de componente Macros de categoria
Inicialização e limpeza no nível da classe ObjectMain

OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO

Permite que você especifique que o objeto deve ser registrado e inicializado, mas ele não deve ser criado externamente por meio de CoCreateInstance.

OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO( clsid, class )

Parâmetros

clsid
[entrada] O CLSID de uma classe COM implementada pela classe nomeada C++.

class
[entrada] O nome da classe C++ que implementa a classe COM representada pelo clsid.

Comentários

As macros de entrada de objeto são colocadas no escopo global no projeto para fornecer suporte para o registro, inicialização e criação de uma classe.

OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO permite especificar que um objeto deve ser registrado e inicializado (consulte OBJECT_ENTRY_AUTO para obter mais informações), mas ele não deve ser criado por meio de CoCreateInstance.

Confira também

Macros