实现 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; \