📄 mapiform.h
字号:
/*
* 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 <mapidefs.h>
#include <mapicode.h>
#include <mapiguid.h>
#include <mapitags.h>
#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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -