Compartilhar via


Escrevendo Código do Servidor de Formulários

Aplica-se a: Outlook 2013 | Outlook 2016

Você pode pensar em um servidor de formulários como o seguinte:

  • Um programa Win32 que exibe uma interface e lida com 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 ActiveX Object Services no SDK do Windows para obter detalhes sobre como registrar o fábrica de classes do servidor de formulários. Lidar com mensagens do Windows e exibir 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ários 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 implementações dessas interfaces precisarão ter métodos QueryInterface, AddRef e Release . Você pode se salvar muito trabalho se usar várias heranças para implementar todas as interfaces necessárias em uma nova classe própria, para que todas as interfaces que você usa 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, implementar todos eles não coloca um grande fardo nos desenvolvedores.

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

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

Interface Descrição Status
IMAPIForm : IUnknown
A interface primária 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 mensagens e salvar mensagens de objetos de formulário. Obrigatório
IMAPIFormAdviseSink : IUnknown
Usado por objetos de formulário para controlar o cliente de mensagens status e para descobrir se o objeto form é capaz de exibir a próxima ou anterior mensagem 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 dá 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ário) que o servidor de formulário também deve implementar. Opcional

Confira também

Desenvolvendo servidores de formulário MAPI