Freigeben über


Implementieren von MAPI-Objekten

Gilt für: Outlook 2013 | Outlook 2016

MAPI-Objekte können mithilfe von C++-Klassen oder C-Datenstrukturen implementiert werden, abhängig von der Sprache und dem API-Satz, den ein Client oder Dienstanbieter verwendet. Dienstanbieter können in C oder C++ mit der MAPI-Dienstanbieterschnittstelle geschrieben werden. Clientanwendungen können auch C oder C++ verwenden. Wenn möglich, sollten Clients und Dienstanbieter, die die objektorientierte Programmierschnittstelle verwenden, C++ verwenden.

C++ ist die bevorzugte Wahl, da MAPI eine objektorientierte Technologie ist und C++ sich leichter für die objektorientierte Entwicklung eignet. Der resultierende Code ist einfacher und einfacher, sodass er einfacher zu verwalten ist. Die MAPI-Dokumentation ist in erster Linie für C++-Entwickler geschrieben. alle Syntaxbeschreibungen für die MAPI-Schnittstellenmethoden in dieser Referenz befinden sich in C++.

Entwickler können Microsoft Visual Studio und Entwicklungstools von Drittanbietern verwenden, um Lösungen zu entwickeln, die MAPI aufrufen. Beachten Sie, dass Entwickler C oder nicht verwaltetes C++ verwenden sollten, aber nicht verwaltetes C++, um MAPI-Lösungen zu schreiben.

Wenn ein MAPI-Objekt implementiert wird, erstellt ein Client oder Dienstanbieter Code für alle Schnittstellenmethoden, Code für alle privaten Methoden, die für die Implementierung spezifisch sind, und Code zur Unterstützung privater Datenmember zum Verwalten von Zustandsinformationen. Der Code für die Schnittstellenmethoden muss den von MAPI veröffentlichten Spezifikationen entsprechen, die das erwartete Verhalten dokumentieren.

Es gibt viele Makros in der Headerdatei Mapidefs.h und OLE-Headerdateien, die Clients und Dienstanbieter in beiden Sprachen verwenden können, um sie bei ihren Definitionen von MAPI-Objekten zu unterstützen. Beispielsweise gibt es ein Makro, um die Methoden der einzelnen MAPI-Schnittstellen zu definieren. Das Makro zum Definieren der Methoden der IUnknown-Schnittstelle wird in Mapidefs.h wie folgt angezeigt:

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

Siehe auch

Übersicht über MAPI-Objekte und -Schnittstellen