Implementando objetos MAPI

Aplica-se a: Outlook 2013 | Outlook 2016

Os objetos MAPI podem ser implementados usando classes C++ ou estruturas de dados C, dependendo da linguagem e do conjunto de API que um cliente ou provedor de serviços está usando. Os provedores de serviços podem ser escritos em C ou C++ com a interface do provedor de serviços MAPI; aplicativos cliente também podem usar C ou C++. Se possível, clientes e provedores de serviços que usam a interface de programação orientada a objetos devem usar C++.

C++ é a escolha preferencial porque MAPI é uma tecnologia orientada a objetos, e C++ se presta mais prontamente ao desenvolvimento orientado a objetos. O código resultante é mais simples e direto, facilitando a manutenção. A documentação MAPI foi escrita principalmente para desenvolvedores de C++; todas as descrições de sintaxe para os métodos de interface MAPI nesta Referência estão em C++.

Os desenvolvedores podem usar o Microsoft Visual Studio e ferramentas de desenvolvimento de terceiros para desenvolver soluções que chamam MAPI. Observe que os desenvolvedores devem usar C ou C++ não gerenciado, mas não C++ gerenciado para escrever soluções MAPI.

Quando um objeto MAPI é implementado, um cliente ou provedor de serviços cria código para todos os métodos de interface, código para todos os métodos privados específicos para a implementação e código para dar suporte a membros de dados privados para manter as informações de estado. O código para os métodos de interface deve seguir as especificações publicadas pelo MAPI que documentam o comportamento esperado.

Há muitas macros no arquivo de cabeçalho Mapidefs.h e nos arquivos de cabeçalho OLE que clientes e provedores de serviços em ambas as linguagens podem usar para ajudá-los com suas definições de objetos MAPI. Por exemplo, há uma macro para definir os métodos de cada uma das interfaces MAPI. A macro para definir os métodos da interface IUnknown aparece em Mapidefs.h da seguinte maneira:

#define MAPI_IUNKNOWN_METHODS(IPURE)          \
    MAPIMETHOD(QueryInterface)                \
        (THIS_ REFIID riid, LPVOID FAR * ppvObj) IPURE;    \
    MAPIMETHOD_(ULONG,AddRef)  (THIS) IPURE;               \
    MAPIMETHOD_(ULONG,Release) (THIS) IPURE;   \
 

Confira também

Visão geral da interface e do objeto MAPI