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
.