Compartilhar via


Implementando objetos MAPI

Aplica-se a: Outlook 2013 | Outlook 2016

Objetos MAPI podem ser implementados usando classes C++ ou estruturas de dados C, dependendo do idioma e do conjunto de API que um cliente ou provedor de serviços está usando. Os provedores de serviços podem ser gravados 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 objeto devem usar C++.

O C++ é a escolha preferida porque o MAPI é uma tecnologia orientada a objetos e o C++ se presta mais facilmente ao desenvolvimento orientado a objetos. O código resultante é mais simples e simples, facilitando a manutenção. A documentação MAPI é gravada principalmente para desenvolvedores do 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 gerenciado C++ para gravar 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 quaisquer métodos privados específicos para a implementação e código para dar suporte a membros de dados privados para manter 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 arquivos de cabeçalho OLE que clientes e provedores de serviços em qualquer idioma 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 do objeto MAPI e da interface