From e611b132f9b8abe35b362e5870b74bce94a1e58e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 16 May 2020 20:51:50 -0700 Subject: initial commit --- public/sdk/inc/mapiform.h | 627 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 627 insertions(+) create mode 100644 public/sdk/inc/mapiform.h (limited to 'public/sdk/inc/mapiform.h') diff --git a/public/sdk/inc/mapiform.h b/public/sdk/inc/mapiform.h new file mode 100644 index 000000000..c002b0b4a --- /dev/null +++ b/public/sdk/inc/mapiform.h @@ -0,0 +1,627 @@ +/* + * M A P I F O R M . H + * + * Declarations of interfaces for clients and providers of MAPI + * forms and form registries. + * + * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved. + */ + +#ifndef MAPIFORM_H +#define MAPIFORM_H + +/* Include common MAPI header files if they haven't been already. */ + +#ifndef MAPIDEFS_H +#include +#include +#include +#include +#endif + +#ifndef BEGIN_INTERFACE +#define BEGIN_INTERFACE +#endif + +#ifndef _MAC +typedef const RECT FAR *LPCRECT; +#endif + +/* HFRMREG is an enumeration which represents a registry container. + * Microsoft reserves the values from 0 to 0x3FFF for its own use. + */ + +typedef ULONG HFRMREG; + +#define HFRMREG_DEFAULT 0 +#define HFRMREG_LOCAL 1 +#define HFRMREG_PERSONAL 2 +#define HFRMREG_FOLDER 3 + +DECLARE_MAPI_INTERFACE_PTR(IPersistMessage, LPPERSISTMESSAGE); +DECLARE_MAPI_INTERFACE_PTR(IMAPIMessageSite, LPMAPIMESSAGESITE); +DECLARE_MAPI_INTERFACE_PTR(IMAPISession, LPMAPISESSION); +DECLARE_MAPI_INTERFACE_PTR(IMAPIViewContext, LPMAPIVIEWCONTEXT); +DECLARE_MAPI_INTERFACE_PTR(IMAPIViewAdviseSink, LPMAPIVIEWADVISESINK); +DECLARE_MAPI_INTERFACE_PTR(IMAPIFormAdviseSink, LPMAPIFORMADVISESINK); +DECLARE_MAPI_INTERFACE_PTR(IMAPIFormInfo, LPMAPIFORMINFO); +DECLARE_MAPI_INTERFACE_PTR(IMAPIFormMgr, LPMAPIFORMMGR); +DECLARE_MAPI_INTERFACE_PTR(IMAPIFormContainer, LPMAPIFORMCONTAINER); +DECLARE_MAPI_INTERFACE_PTR(IMAPIForm, LPMAPIFORM); +DECLARE_MAPI_INTERFACE_PTR(IMAPIFormFactory, LPMAPIFORMFACTORY); + +typedef const char FAR *FAR * LPPCSTR; +typedef LPMAPIFORMINFO FAR *LPPMAPIFORMINFO; + +STDAPI MAPIOpenFormMgr(LPMAPISESSION pSession, LPMAPIFORMMGR FAR * ppmgr); +STDAPI MAPIOpenLocalFormContainer(LPMAPIFORMCONTAINER FAR * ppfcnt); + + +/*-- GetLastError ----------------------------------------------------------*/ +/* This defines the GetLastError method held in common by most mapiform + * interfaces. It is defined separately so that an implementor may include + * more than one mapiform interface in a class. + */ + +#define MAPI_GETLASTERROR_METHOD(IPURE) \ + MAPIMETHOD(GetLastError) (THIS_ \ + /*in*/ HRESULT hResult, \ + /*in*/ ULONG ulFlags, \ + /*out*/ LPMAPIERROR FAR * lppMAPIError) IPURE; \ + + +/*-- IPersistMessage -------------------------------------------------------*/ +/* This interface is implemented by forms and is used to save, + * initialize and load forms to and from messages. + */ + +#define MAPI_IPERSISTMESSAGE_METHODS(IPURE) \ + MAPIMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) IPURE; \ + MAPIMETHOD(IsDirty)(THIS) IPURE; \ + MAPIMETHOD(InitNew)(THIS_ \ + /*in*/ LPMAPIMESSAGESITE pMessageSite, \ + /*in*/ LPMESSAGE pMessage) IPURE; \ + MAPIMETHOD(Load)(THIS_ \ + /*in*/ LPMAPIMESSAGESITE pMessageSite, \ + /*in*/ LPMESSAGE pMessage, \ + /*in*/ ULONG ulMessageStatus, \ + /*in*/ ULONG ulMessageFlags) IPURE; \ + MAPIMETHOD(Save)(THIS_ \ + /*in*/ LPMESSAGE pMessage, \ + /*in*/ ULONG fSameAsLoad) IPURE; \ + MAPIMETHOD(SaveCompleted)(THIS_ \ + /*in*/ LPMESSAGE pMessage) IPURE; \ + MAPIMETHOD(HandsOffMessage)(THIS) IPURE; \ + +#undef INTERFACE +#define INTERFACE IPersistMessage +DECLARE_MAPI_INTERFACE_(IPersistMessage, IUnknown) +{ + BEGIN_INTERFACE + MAPI_IUNKNOWN_METHODS(PURE) + MAPI_GETLASTERROR_METHOD(PURE) + MAPI_IPERSISTMESSAGE_METHODS(PURE) +}; + + +/*-- IMAPIMessageSite ------------------------------------------------------*/ + +#define MAPI_IMAPIMESSAGESITE_METHODS(IPURE) \ + MAPIMETHOD(GetSession) (THIS_ \ + /*out*/ LPMAPISESSION FAR * ppSession) IPURE; \ + MAPIMETHOD(GetStore) (THIS_ \ + /*out*/ LPMDB FAR * ppStore) IPURE; \ + MAPIMETHOD(GetFolder) (THIS_ \ + /*out*/ LPMAPIFOLDER FAR * ppFolder) IPURE; \ + MAPIMETHOD(GetMessage) (THIS_ \ + /*out*/ LPMESSAGE FAR * ppmsg) IPURE; \ + MAPIMETHOD(GetFormManager) (THIS_ \ + /*out*/ LPMAPIFORMMGR FAR * ppFormMgr) IPURE; \ + MAPIMETHOD(NewMessage) (THIS_ \ + /*in*/ ULONG fComposeInFolder, \ + /*in*/ LPMAPIFOLDER pFolderFocus, \ + /*in*/ LPPERSISTMESSAGE pPersistMessage, \ + /*out*/ LPMESSAGE FAR * ppMessage, \ + /*out*/ LPMAPIMESSAGESITE FAR * ppMessageSite, \ + /*out*/ LPMAPIVIEWCONTEXT FAR * ppViewContext) IPURE; \ + MAPIMETHOD(CopyMessage) (THIS_ \ + /*in*/ LPMAPIFOLDER pFolderDestination) IPURE; \ + MAPIMETHOD(MoveMessage) (THIS_ \ + /*in*/ LPMAPIFOLDER pFolderDestination, \ + /*in*/ LPMAPIVIEWCONTEXT pViewContext, \ + /*in*/ LPCRECT prcPosRect) IPURE; \ + MAPIMETHOD(DeleteMessage) (THIS_ \ + /*in*/ LPMAPIVIEWCONTEXT pViewContext, \ + /*in*/ LPCRECT prcPosRect) IPURE; \ + MAPIMETHOD(SaveMessage) (THIS) IPURE; \ + MAPIMETHOD(SubmitMessage) (THIS_ \ + /*in*/ ULONG ulFlags) IPURE; \ + MAPIMETHOD(GetSiteStatus) (THIS_ \ + /*out*/ LPULONG lpulStatus) IPURE; \ + +#undef INTERFACE +#define INTERFACE IMAPIMessageSite +DECLARE_MAPI_INTERFACE_(IMAPIMessageSite, IUnknown) +{ + BEGIN_INTERFACE + MAPI_IUNKNOWN_METHODS(PURE) + MAPI_GETLASTERROR_METHOD(PURE) + MAPI_IMAPIMESSAGESITE_METHODS(PURE) +}; + + +/*-- IMAPIForm -------------------------------------------------------------*/ +/* This interface is implemented by forms for the benefit of viewers. + * One method (ShutdownForm) is provided such that simple forms implementing + * only IMAPIForm and IPersistMessage have reasonable embedding behavior. + */ + +#define MAPI_IMAPIFORM_METHODS(IPURE) \ + MAPIMETHOD(SetViewContext) (THIS_ \ + /*in*/ LPMAPIVIEWCONTEXT pViewContext) IPURE; \ + MAPIMETHOD(GetViewContext) (THIS_ \ + /*out*/ LPMAPIVIEWCONTEXT FAR * ppViewContext) IPURE; \ + MAPIMETHOD(ShutdownForm)(THIS_ \ + /*in*/ ULONG ulSaveOptions) IPURE; \ + MAPIMETHOD(DoVerb) (THIS_ \ + /*in*/ LONG iVerb, \ + /*in*/ LPMAPIVIEWCONTEXT lpViewContext, /* can be null */ \ + /*in*/ ULONG hwndParent, \ + /*in*/ LPCRECT lprcPosRect) IPURE; \ + MAPIMETHOD(Advise)(THIS_ \ + /*in*/ LPMAPIVIEWADVISESINK pAdvise, \ + /*out*/ ULONG FAR * pdwStatus) IPURE; \ + MAPIMETHOD(Unadvise) (THIS_ \ + /*in*/ ULONG ulConnection) IPURE; \ + +#undef INTERFACE +#define INTERFACE IMAPIForm +DECLARE_MAPI_INTERFACE_(IMAPIForm, IUnknown) +{ + BEGIN_INTERFACE + MAPI_IUNKNOWN_METHODS(PURE) + MAPI_GETLASTERROR_METHOD(PURE) + MAPI_IMAPIFORM_METHODS(PURE) +}; + +typedef enum tagSAVEOPTS +{ + SAVEOPTS_SAVEIFDIRTY = 0, + SAVEOPTS_NOSAVE = 1, + SAVEOPTS_PROMPTSAVE = 2 +} SAVEOPTS; + + +/*-- IMAPIViewContext ------------------------------------------------------*/ +/* Implemented by viewers to support next/previous in forms. + */ + +/* Structure passed in GetPrintSetup */ + +typedef struct { + ULONG ulFlags; /* MAPI_UNICODE */ + HGLOBAL hDevMode; + HGLOBAL hDevNames; + ULONG ulFirstPageNumber; + ULONG fPrintAttachments; +} FORMPRINTSETUP, FAR * LPFORMPRINTSETUP; + +/* Values for pulFormat in GetSaveStream */ + +#define SAVE_FORMAT_TEXT 1 +#define SAVE_FORMAT_RICHTEXT 2 + +/* Values from 0 to 0x3fff are reserved for future definition by Microsoft */ + +#define MAPI_IMAPIVIEWCONTEXT_METHODS(IPURE) \ + MAPIMETHOD(SetAdviseSink)(THIS_ \ + /*in*/ LPMAPIFORMADVISESINK pmvns) IPURE; \ + MAPIMETHOD(ActivateNext)(THIS_ \ + /*in*/ ULONG ulDir, \ + /*in*/ LPCRECT prcPosRect) IPURE; \ + MAPIMETHOD(GetPrintSetup)(THIS_ \ + /*in*/ ULONG ulFlags, \ + /*out*/ LPFORMPRINTSETUP FAR * lppFormPrintSetup) IPURE; \ + MAPIMETHOD(GetSaveStream)(THIS_ \ + /*out*/ ULONG FAR * pulFlags, \ + /*out*/ ULONG FAR * pulFormat, \ + /*out*/ LPSTREAM FAR * ppstm) IPURE; \ + MAPIMETHOD(GetViewStatus) (THIS_ \ + /*out*/ LPULONG lpulStatus) IPURE; \ + +#undef INTERFACE +#define INTERFACE IMAPIViewContext +DECLARE_MAPI_INTERFACE_(IMAPIViewContext, IUnknown) +{ + BEGIN_INTERFACE + MAPI_IUNKNOWN_METHODS(PURE) + MAPI_GETLASTERROR_METHOD(PURE) + MAPI_IMAPIVIEWCONTEXT_METHODS(PURE) +}; + +#define VCSTATUS_NEXT 0x00000001 +#define VCSTATUS_PREV 0x00000002 +#define VCSTATUS_MODAL 0x00000004 +#define VCSTATUS_INTERACTIVE 0x00000008 +#define VCSTATUS_READONLY 0x00000010 +#define VCSTATUS_DELETE 0x00010000 +#define VCSTATUS_COPY 0x00020000 +#define VCSTATUS_MOVE 0x00040000 +#define VCSTATUS_SUBMIT 0x00080000 +#define VCSTATUS_DELETE_IS_MOVE 0x00100000 +#define VCSTATUS_SAVE 0x00200000 +#define VCSTATUS_NEW_MESSAGE 0x00400000 + +#define VCDIR_NEXT VCSTATUS_NEXT +#define VCDIR_PREV VCSTATUS_PREV +#define VCDIR_DELETE VCSTATUS_DELETE +#define VCDIR_MOVE VCSTATUS_MOVE + + +/*-- IMAPIFormAdviseSink ---------------------------------------------------*/ +/* Part of form server, held by view; receives notifications from the view. + * + * This part of the form server, but is not an interface on the form + * object. This means that clients should not expect to QueryInterface + * from an IMAPIForm* or IOleObject* to this interface, or vice versa. + */ + +#define MAPI_IMAPIFORMADVISESINK_METHODS(IPURE) \ + STDMETHOD(OnChange)(THIS_ ULONG ulDir) IPURE; \ + STDMETHOD(OnActivateNext)(THIS_ \ + /*in*/ LPCSTR lpszMessageClass, \ + /*in*/ ULONG ulMessageStatus, \ + /*in*/ ULONG ulMessageFlags, \ + /*out*/ LPPERSISTMESSAGE FAR * ppPersistMessage) IPURE; \ + +#undef INTERFACE +#define INTERFACE IMAPIFormAdviseSink +DECLARE_MAPI_INTERFACE_(IMAPIFormAdviseSink, IUnknown) +{ + BEGIN_INTERFACE + MAPI_IUNKNOWN_METHODS(PURE) + MAPI_IMAPIFORMADVISESINK_METHODS(PURE) +}; + + +/*-- IMAPIViewAdviseSink ---------------------------------------------------*/ +/* Part of view context, held by form; receives notifications from the form. + */ + +#define MAPI_IMAPIVIEWADVISESINK_METHODS(IPURE) \ + MAPIMETHOD(OnShutdown)(THIS) IPURE; \ + MAPIMETHOD(OnNewMessage)(THIS) IPURE; \ + MAPIMETHOD(OnPrint)(THIS_ \ + /*in*/ ULONG dwPageNumber, \ + /*in*/ HRESULT hrStatus) IPURE; \ + MAPIMETHOD(OnSubmitted) (THIS) IPURE; \ + MAPIMETHOD(OnSaved) (THIS) IPURE; \ + +#undef INTERFACE +#define INTERFACE IMAPIViewAdviseSink +DECLARE_MAPI_INTERFACE_(IMAPIViewAdviseSink, IUnknown) +{ + BEGIN_INTERFACE + MAPI_IUNKNOWN_METHODS(PURE) + MAPI_IMAPIVIEWADVISESINK_METHODS(PURE) +}; + + +/*-- IMAPIFormInfo ---------------------------------------------------------*/ +/* Is implemented by registries. Describes the form. + */ + +/* Single enum value */ + +typedef struct +{ /* fpev */ + LPTSTR pszDisplayName; /* carries the display string */ + ULONG nVal; /* the value for the above enumeration */ +} SMAPIFormPropEnumVal, FAR * LPMAPIFORMPROPENUMVAL; + +/* MAPI Form property descriptor */ + +/* + * Values for the tag in the SMAPIFormProp structure + * + * Microsoft reserves the range from 0 to 0x3FFF for future use in its other + * forms registry implementations. + */ + +typedef ULONG FORMPROPSPECIALTYPE; + +#define FPST_VANILLA 0 +#define FPST_ENUM_PROP 1 + +typedef struct +{ + ULONG ulFlags; /* Contains MAPI_UNICODE if strings are UNICODE */ + ULONG nPropType; /* type of the property, hiword is 0 */ + MAPINAMEID nmid; /* id of the property */ + LPTSTR pszDisplayName; + FORMPROPSPECIALTYPE nSpecialType; /* tag for the following union */ + union + { + struct + { + MAPINAMEID nmidIdx; + ULONG cfpevAvailable; /* # of enums */ + LPMAPIFORMPROPENUMVAL pfpevAvailable; + } s1; /* Property String/Number association Enumeration */ + } u; +} SMAPIFormProp, FAR * LPMAPIFORMPROP; + +/* Array of form properties */ + +typedef struct +{ + ULONG cProps; + ULONG ulPad; /* Pad to 8-byte alignment for insurance */ + SMAPIFormProp aFormProp[MAPI_DIM]; +} SMAPIFormPropArray, FAR * LPMAPIFORMPROPARRAY; + +#define CbMAPIFormPropArray(_c) \ + (offsetof(SMAPIFormPropArray, aFormProp) + \ + (_c)*sizeof(SMAPIFormProp)) + +/* Structure defining the layout of an mapi verb description */ + +typedef struct +{ + LONG lVerb; + LPTSTR szVerbname; + DWORD fuFlags; + DWORD grfAttribs; + ULONG ulFlags; /* Either 0 or MAPI_UNICODE */ +} SMAPIVerb, FAR * LPMAPIVERB; + +/* Structure used for returning arrays of mapi verbs */ + +typedef struct +{ + ULONG cMAPIVerb; /* Number of verbs in the structure */ + SMAPIVerb aMAPIVerb[MAPI_DIM]; +} SMAPIVerbArray, FAR * LPMAPIVERBARRAY; + +#define CbMAPIVerbArray(_c) \ + (offsetof(SMAPIVerbArray, aMAPIVerb) + \ + (_c)*sizeof(SMAPIVerb)) + +#define MAPI_IMAPIFORMINFO_METHODS(IPURE) \ + MAPIMETHOD(CalcFormPropSet)(THIS_ \ + /*in*/ ULONG ulFlags, \ + /*out*/ LPMAPIFORMPROPARRAY FAR * ppFormPropArray) IPURE; \ + MAPIMETHOD(CalcVerbSet)(THIS_ \ + /*in*/ ULONG ulFlags, \ + /*out*/ LPMAPIVERBARRAY FAR * ppMAPIVerbArray) IPURE; \ + MAPIMETHOD(MakeIconFromBinary)(THIS_ \ + /*in*/ ULONG nPropID, \ + /*out*/ HICON FAR* phicon) IPURE; \ + MAPIMETHOD(SaveForm)(THIS_ \ + /*in*/ LPCTSTR szFileName) IPURE; \ + MAPIMETHOD(OpenFormContainer)(THIS_ \ + /*out*/ LPMAPIFORMCONTAINER FAR * ppformcontainer) IPURE; \ + +#undef INTERFACE +#define INTERFACE IMAPIFormInfo +DECLARE_MAPI_INTERFACE_(IMAPIFormInfo, IMAPIProp) +{ + BEGIN_INTERFACE + MAPI_IUNKNOWN_METHODS(PURE) + MAPI_IMAPIPROP_METHODS(PURE) /* note: subsumes getlasterror */ + MAPI_IMAPIFORMINFO_METHODS(PURE) +}; + + +/* Enumeration of permissible values for PR_FORM_MESSAGE_BEHAVIOR */ + +#define MAPI_MESSAGE_BEHAVIOR_IPM 0 +#define MAPI_MESSAGE_BEHAVIOR_FOLDER 1 + + +/*-- IMAPIFormMgr ----------------------------------------------------------*/ +/* The client-visible interface for form resolution and dispatch. + */ + +/* Structure containing an array of message class strings */ + +typedef struct +{ + ULONG cValues; + LPCSTR aMessageClass[MAPI_DIM]; +} SMessageClassArray, FAR * LPSMESSAGECLASSARRAY; + +#define CbMessageClassArray(_c) \ + (offsetof(SMessageClassArray, aMessageClass) + (_c)*sizeof(LPCSTR)) + +/* Structure containing an array of IMAPIFormInfo interfaces */ + +typedef struct +{ + ULONG cForms; + LPMAPIFORMINFO aFormInfo[MAPI_DIM]; +} SMAPIFormInfoArray, FAR * LPSMAPIFORMINFOARRAY; + +#define CbMAPIFormInfoArray(_c) \ + (offsetof(SMAPIFormInfoArray, aFormInfo) + \ + (_c)*sizeof(LPMAPIFORMINFO)) + +/* Flags for IMAPIFormMgr::SelectFormContainer */ + +#define MAPIFORM_SELECT_ALL_REGISTRIES 0 +#define MAPIFORM_SELECT_FOLDER_REGISTRY_ONLY 1 +#define MAPIFORM_SELECT_NON_FOLDER_REGISTRY_ONLY 2 + +/* Flags for IMAPIFormMgr::CalcFormPropSet */ + +#define FORMPROPSET_UNION 0 +#define FORMPROPSET_INTERSECTION 1 + +/* Flags for IMAPIFormMgr::ResolveMessageClass and + IMAPIFormMgr::ResolveMultipleMessageClasses */ + +#define MAPIFORM_EXACTMATCH 0x0020 + +#define MAPI_IMAPIFORMMGR_METHODS(IPURE) \ + MAPIMETHOD(LoadForm)(THIS_ \ + /*in*/ ULONG ulUIParam, \ + /*in*/ ULONG ulFlags, \ + /*in*/ LPCSTR lpszMessageClass, \ + /*in*/ ULONG ulMessageStatus, \ + /*in*/ ULONG ulMessageFlags, \ + /*in*/ LPMAPIFOLDER pFolderFocus, \ + /*in*/ LPMAPIMESSAGESITE pMessageSite, \ + /*in*/ LPMESSAGE pmsg, \ + /*in*/ LPMAPIVIEWCONTEXT pViewContext, \ + /*in*/ REFIID riid, \ + /*out*/ LPVOID FAR *ppvObj) IPURE; \ + MAPIMETHOD(ResolveMessageClass)(THIS_ \ + /*in*/ LPCSTR szMsgClass, \ + /*in*/ ULONG ulFlags, \ + /*in*/ LPMAPIFOLDER pFolderFocus, /* can be null */ \ + /*out*/ LPMAPIFORMINFO FAR* ppResult) IPURE; \ + MAPIMETHOD(ResolveMultipleMessageClasses)(THIS_ \ + /*in*/ LPSMESSAGECLASSARRAY pMsgClasses, \ + /*in*/ ULONG ulFlags, \ + /*in*/ LPMAPIFOLDER pFolderFocus, /* can be null */ \ + /*out*/ LPSMAPIFORMINFOARRAY FAR * pfrminfoarray) IPURE; \ + MAPIMETHOD(CalcFormPropSet)(THIS_ \ + /*in*/ LPSMAPIFORMINFOARRAY pfrminfoarray, \ + /*in*/ ULONG ulFlags, \ + /*out*/ LPMAPIFORMPROPARRAY FAR* ppResults) IPURE; \ + MAPIMETHOD(CreateForm)(THIS_ \ + /*in*/ ULONG ulUIParam, \ + /*in*/ ULONG ulFlags, \ + /*in*/ LPMAPIFORMINFO pfrminfoToActivate, \ + /*in*/ REFIID refiidToAsk, \ + /*out*/ LPVOID FAR* ppvObj) IPURE; \ + MAPIMETHOD(SelectForm)(THIS_ \ + /*in*/ ULONG ulUIParam, \ + /*in*/ ULONG ulFlags, \ + /*in*/ LPCTSTR pszTitle, \ + /*in*/ LPMAPIFOLDER pfld, \ + /*out*/ LPMAPIFORMINFO FAR * ppfrminfoReturned) IPURE; \ + MAPIMETHOD(SelectMultipleForms)(THIS_ \ + /*in*/ ULONG ulUIParam, \ + /*in*/ ULONG ulFlags, \ + /*in*/ LPCTSTR pszTitle, \ + /*in*/ LPMAPIFOLDER pfld, \ + /*in*/ LPSMAPIFORMINFOARRAY pfrminfoarray, \ + /*out*/ LPSMAPIFORMINFOARRAY FAR * ppfrminfoarray) IPURE; \ + MAPIMETHOD(SelectFormContainer)(THIS_ \ + /*in*/ ULONG ulUIParam, \ + /*in*/ ULONG ulFlags, \ + /*out*/ LPMAPIFORMCONTAINER FAR * lppfcnt) IPURE; \ + MAPIMETHOD(OpenFormContainer)(THIS_ \ + /*in*/ HFRMREG hfrmreg, \ + /*in*/ LPUNKNOWN lpunk, \ + /*out*/ LPMAPIFORMCONTAINER FAR * lppfcnt) IPURE; \ + MAPIMETHOD(PrepareForm)(THIS_ \ + /*in*/ ULONG ulUIParam, \ + /*in*/ ULONG ulFlags, \ + /*in*/ LPMAPIFORMINFO pfrminfo) IPURE; \ + MAPIMETHOD(IsInConflict)(THIS_ \ + /*in*/ ULONG ulMessageFlags, \ + /*in*/ ULONG ulMessageStatus, \ + /*in*/ LPCSTR szMessageClass, \ + /*in*/ LPMAPIFOLDER pFolderFocus) IPURE; \ + +#undef INTERFACE +#define INTERFACE IMAPIFormMgr +DECLARE_MAPI_INTERFACE_(IMAPIFormMgr, IUnknown) +{ + BEGIN_INTERFACE + MAPI_IUNKNOWN_METHODS(PURE) + MAPI_GETLASTERROR_METHOD(PURE) + MAPI_IMAPIFORMMGR_METHODS(PURE) +}; + +/* Platform numbers (used in .CFG files for forms) */ + +#define MAPIFORM_CPU_X86 1 +#define MAPIFORM_CPU_MIP 2 +#define MAPIFORM_CPU_AXP 3 +#define MAPIFORM_CPU_PPC 4 +#define MAPIFORM_CPU_M68 5 + +#define MAPIFORM_OS_WIN_31 1 +#define MAPIFORM_OS_WINNT_35 2 +#define MAPIFORM_OS_WIN_95 3 +#define MAPIFORM_OS_MAC_7x 4 +#define MAPIFORM_OS_WINNT_40 5 + +#define MAPIFORM_PLATFORM(CPU, OS) ((ULONG) ((((ULONG) CPU) << 16) | OS)) + + +/*-- IMAPIFormContainer -------------------------------------------------*/ + +/* Flags for IMAPIFormMgr::CalcFormPropSet */ + +/* #define FORMPROPSET_UNION 0 */ +/* #define FORMPROPSET_INTERSECTION 1 */ + +/* Flags for IMAPIFormMgr::InstallForm */ + +#define MAPIFORM_INSTALL_DIALOG MAPI_DIALOG +#define MAPIFORM_INSTALL_OVERWRITEONCONFLICT 0x0010 + +/* Flags for IMAPIFormContainer::ResolveMessageClass and + IMAPIFormContainer::ResolveMultipleMessageClasses */ +/* #define MAPIFORM_EXACTIMATCH 0x0020 */ + +#define MAPI_IMAPIFORMCONTAINER_METHODS(IPURE) \ + MAPIMETHOD(InstallForm)(THIS_ \ + /*in*/ ULONG ulUIParam, \ + /*in*/ ULONG ulFlags, \ + /*in*/ LPCTSTR szCfgPathName) IPURE; \ + MAPIMETHOD(RemoveForm)(THIS_ \ + /*in*/ LPCSTR szMessageClass) IPURE; \ + MAPIMETHOD(ResolveMessageClass) (THIS_ \ + /*in*/ LPCSTR szMessageClass, \ + /*in*/ ULONG ulFlags, \ + /*out*/ LPMAPIFORMINFO FAR * pforminfo) IPURE; \ + MAPIMETHOD(ResolveMultipleMessageClasses) (THIS_ \ + /*in*/ LPSMESSAGECLASSARRAY pMsgClassArray, \ + /*in*/ ULONG ulFlags, \ + /*out*/ LPSMAPIFORMINFOARRAY FAR * ppfrminfoarray) IPURE; \ + MAPIMETHOD(CalcFormPropSet)(THIS_ \ + /*in*/ ULONG ulFlags, \ + /*out*/ LPMAPIFORMPROPARRAY FAR * ppResults) IPURE; \ + MAPIMETHOD(GetDisplay)(THIS_ \ + /*in*/ ULONG ulFlags, \ + /*out*/ LPTSTR FAR * pszDisplayName) IPURE; \ + +#undef INTERFACE +#define INTERFACE IMAPIFormContainer +DECLARE_MAPI_INTERFACE_(IMAPIFormContainer, IUnknown) +{ + BEGIN_INTERFACE + MAPI_IUNKNOWN_METHODS(PURE) + MAPI_GETLASTERROR_METHOD(PURE) + MAPI_IMAPIFORMCONTAINER_METHODS(PURE) +}; + +/*-- IMAPIFormFactory ------------------------------------------------------*/ + +#define MAPI_IMAPIFORMFACTORY_METHODS(IPURE) \ + MAPIMETHOD(CreateClassFactory) (THIS_ \ + /*in*/ REFCLSID clsidForm, \ + /*in*/ ULONG ulFlags, \ + /*out*/ LPCLASSFACTORY FAR * lppClassFactory) IPURE; \ + MAPIMETHOD(LockServer) (THIS_ \ + /*in*/ ULONG ulFlags, \ + /*in*/ ULONG fLockServer) IPURE; \ + +#undef INTERFACE +#define INTERFACE IMAPIFormFactory +DECLARE_MAPI_INTERFACE_(IMAPIFormFactory, IUnknown) +{ + BEGIN_INTERFACE + MAPI_IUNKNOWN_METHODS(PURE) + MAPI_GETLASTERROR_METHOD(PURE) + MAPI_IMAPIFORMFACTORY_METHODS(PURE) +}; + +#endif /* MAPIFORM_H */ + + -- cgit v1.2.3