Escrevendo código de servidor de formulário

Aplica-se a: Outlook 2013 | Outlook 2016

Você pode pensar em um servidor de formulário da seguinte forma:

  • Um programa Win32 que exibe uma interface e manipula mensagens do Windows por meio dos mecanismos padrão da bomba de mensagens do Windows.

  • Um objeto que registra sua fábrica de classes com OLE e é ativado por métodos de automação OLE.

  • Um objeto MAPI que segue as regras MAPI para interações com outros componentes MAPI.

Seu código precisa lidar com todos esses três requisitos amplos simultaneamente.

Consulte a seção COM e Serviços de Objeto ActiveX no SDK do Windows para obter detalhes sobre como registrar a fábrica de classes do servidor de formulário. O tratamento de mensagens do Windows e a exibição de uma interface são técnicas de programação padrão do Windows que não têm requisitos especiais em relação aos formulários MAPI. Novamente, o SDK do Windows tem detalhes sobre a programação do Windows. Este documento contém o que você precisa saber para implementar as interfaces de formulário MAPI necessárias e opcionais para que elas sigam as regras MAPI para interações com outros componentes MAPI — principalmente o gerenciador de formulário MAPI e aplicativos cliente de mensagens.

Todas as interfaces que você pode usar ao implementar servidores de formulário são derivadas, direta ou indiretamente, da classe base OLE IUnknown. Isso significa que todas as suas implementações dessas interfaces precisarão ter os métodos QueryInterface, AddRef e Release . Você pode economizar muito trabalho se usar herança múltipla para implementar todas as interfaces necessárias em uma nova classe própria, para que todas as interfaces usadas possam compartilhar uma única implementação dos métodos IUnknown necessários. Para obter mais informações, consulte os métodos IUnknown::AddRef, IUnknown::QueryInterface e IUnknown::Release . Não há considerações especiais em relação aos servidores de formulário MAPI para esses métodos.

Embora nem todas as interfaces de formulário MAPI sejam obrigatórias para todos os servidores de formulário, os métodos em qualquer interface específica são obrigatórios. Ou seja, se você optar por implementar uma interface específica, deverá implementar todos os métodos na interface. Isso é diferente da situação com alguns outros componentes MAPI, como transportes de mensagens. Felizmente, os métodos nas interfaces de formulário MAPI são relativamente simples, portanto, a implementação de todos eles não sobrecarrega muito os desenvolvedores.

As interfaces de formulário MAPI são independentes do tipo de ferramenta de desenvolvimento usada para criar um servidor de formulário. Isso permite que formulários sejam criados usando diferentes ferramentas de desenvolvimento. O único requisito é que todos os servidores de formulário sejam compatíveis com as interfaces de formulário MAPI necessárias.

Nem todas as interfaces MAPI relacionadas a formulários são exigidas por todos os servidores de formulário. As interfaces opcionais permitem implementar algumas funções de formulário avançadas que não são necessárias para a maioria dos servidores de formulário. A tabela a seguir lista as interfaces, para que servem e se você deve implementá-las.

Interface Descrição Status
IMAPIForm : IUnknown
A interface principal que os clientes usam para carregar servidores de formulário, executar verbos de formulário e desligar servidores de formulário. Essa também é a interface derivada do OLE IUnknown que é usado para informar outros componentes OLE sobre quais interfaces um objeto de formulário implementa. Obrigatório
IPersistMessage : IUnknown
Usado ao carregar e salvar mensagens de objetos de formulário. Obrigatório
IMAPIFormAdviseSink : IUnknown
Usado por objetos de formulário para controlar o status do cliente de mensagens e para descobrir se o objeto de formulário é capaz de exibir a mensagem seguinte ou anterior em uma pasta. Opcional
IClassFactory
A interface de fábrica de classe OLE usada por objetos de formulário para conformidade com o mecanismo de fábrica de classe OLE. Obrigatório
IMAPIFormFactory : IUnknown
Usado se o servidor de formulário der suporte a mais de um tipo de formulário. Nesse caso, a interface IMAPIFormFactory permite que os aplicativos cliente acessem as várias interfaces IClassFactory (uma por tipo de formulário compatível com o servidor de formulários) que o servidor de formulários também deve implementar. Opcional

Confira também

Desenvolvendo servidores de formulário MAPI