Servidores de automação
A automação possibilita que um aplicativo manipule objetos implementados em outro aplicativo ou exponha objetos para que possam ser manipulados. Um servidor de Automação é um aplicativo que expõe objetos programáveis (chamados de objetos de Automação) a outros aplicativos (chamados de clientes de Automação). Os servidores de Automação às vezes são chamados de componentes de Automação.
Expor objetos de Automação permite que os clientes automatizem determinados procedimentos acessando diretamente os objetos e a funcionalidade que o servidor disponibiliza. Expor objetos dessa forma é benéfico quando os aplicativos fornecem funcionalidades úteis para outros aplicativos. Por exemplo, um processador de palavras pode expor sua funcionalidade de verificação ortográfica para que outros programas possam usá-la. A exposição de objetos permite, assim, que os fornecedores aprimorem a funcionalidade dos respectivos aplicativos usando a funcionalidade pronta de outros aplicativos.
Esses objetos de Automação têm propriedades e métodos como a interface externa. As propriedades são atributos nomeados do objeto de Automação. As propriedades são como os membros de dados de uma classe C++. Os métodos são funções que funcionam em objetos de Automação. Os métodos são como as funções membro públicas de uma classe C++.
Observação
Embora as propriedades sejam como membros de dados de C++, elas não são diretamente acessíveis. Para fornecer acesso transparente, configure uma variável interna no objeto de Automação com um par de funções membro get/set para acessá-las.
Ao expor a funcionalidade do aplicativo por meio de uma interface comum e bem definida, a Automação possibilita criar aplicativos em uma só linguagem de programação geral, como o Microsoft Visual Basic, em vez de em diversas linguagens de macro específicas do aplicativo.
Suporte para servidores de Automação
O Visual C++ e a estrutura MFC fornecem amplo suporte para servidores de Automação. Eles lidam com grande parte da sobrecarga envolvida na criação de um servidor de Automação, para que você possa concentrar seus esforços na funcionalidade do aplicativo.
O principal mecanismo da estrutura para dar suporte à Automação é o mapa de expedição, um conjunto de macros que se expande para as declarações e chamadas necessárias para expor métodos e propriedades do OLE. Um mapa de expedição comum tem esta aparência:
BEGIN_DISPATCH_MAP(CMyServerDoc, COleServerDoc)
DISP_PROPERTY(CMyServerDoc, "Msg", m_strMsg, VT_BSTR)
DISP_FUNCTION(CMyServerDoc, "SetDirty", SetDirty, VT_EMPTY, VTS_I4)
END_DISPATCH_MAP()
O Assistente de Classe e o Modo de Exibição de Classe auxiliam na manutenção dos mapas de expedição. Quando você adiciona um novo método ou propriedade a uma classe, o Visual Studio adiciona uma macro DISP_FUNCTION
ou DISP_PROPERTY
correspondente com parâmetros que indicam o nome da classe, ps nomes externos e internos do método ou propriedade e os tipos de dados.
A caixa de diálogo Adicionar Classe também simplifica a declaração das classes de Automação e o gerenciamento de suas propriedades e operações. Ao usar a caixa de diálogo Adicionar Classe para adicionar uma classe ao projeto, você especifica sua classe base. Se a classe base permitir a Automação, a caixa de diálogo Adicionar Classe exibirá os controles usados para especificar se a nova classe deve dar suporte à Automação, se ela é "criável pelo OLE" (ou seja, se objetos da classe podem ser criados em uma solicitação de um cliente COM) e o nome externo do cliente COM a ser usado.
Em seguida, a caixa de diálogo Adicionar Classe cria uma declaração de classe, incluindo as macros apropriadas para os recursos OLE especificados. Ela também adiciona o código esqueleto para implementação das funções membro de sua classe.
O Assistente de Aplicativo MFC simplifica as etapas envolvidas na ativação do aplicativo do servidor de Automação. Se você marcar a caixa de seleção Automação na página Recursos Avançados, o Assistente de Aplicativo MFC adicionará à função InitInstance
do aplicativo as chamadas necessárias para registrar seus objetos de Automação e executar seu aplicativo como um servidor de Automação.