/* * M A P I F O R M . H * * Declarations of interfaces for clients and providers of MAPI * forms and form registries. * * Copyright 1986-1999 Microsoft Corporation. All Rights Reserved. */ #ifndef MAPIFORM_H #define MAPIFORM_H #if _MSC_VER > 1000 #pragma once #endif /* 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 */