实现 MAPI 对象

适用于:Outlook 2013 | Outlook 2016

MAPI 对象可以使用 C++ 类或 C 数据结构来实现,具体取决于客户端或服务提供商使用的语言和 API 集。 可以使用 MAPI 服务提供程序接口以 C 或 C++ 编写服务提供程序;客户端应用程序还可以使用 C 或 C++。 如果可能,使用面向对象的编程接口的客户端和服务提供商应使用 C++。

C++ 是首选,因为 MAPI 是一种面向对象的技术,C++ 更适合面向对象的开发。 生成的代码更简单、更直接,更易于维护。 MAPI 文档主要为 C++ 开发人员编写;本参考中 MAPI 接口方法的所有语法说明均采用 C++。

开发人员可以使用 Microsoft Visual Studio 和第三方开发工具来开发调用 MAPI 的解决方案。 请注意,开发人员应使用 C 或非托管 C++,但不应使用托管 C++ 来编写 MAPI 解决方案。

实现 MAPI 对象时,客户端或服务提供程序将为所有接口方法创建代码,为特定于实现的任何专用方法创建代码,以及用于支持用于维护状态信息的专用数据成员的代码。 接口方法的代码必须遵循 MAPI 发布的记录预期行为的规范。

Mapidefs.h 头文件和 OLE 头文件中有许多宏,客户端和服务提供商可以使用任一语言来帮助他们定义 MAPI 对象。 例如,有一个宏用于定义每个 MAPI 接口的方法。 用于定义 IUnknown 接口方法的宏显示在 Mapidefs.h 中,如下所示:

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

另请参阅

MAPI 对象和接口概述