home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / exchext.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  25.0 KB  |  791 lines

  1. #ifndef EXCHEXT_H
  2. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  3. #define EXCHEXT_H
  4.  
  5.  
  6. /*
  7.  *    E X C H E X T . H
  8.  *
  9.  *    Declarations of interfaces for providers of Microsoft Exchange
  10.  *    client extensions. 
  11.  *
  12.  *  Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
  13.  */
  14.  
  15.  
  16. #ifndef BEGIN_INTERFACE
  17. #define BEGIN_INTERFACE
  18. #endif
  19.  
  20.  
  21. /*
  22.  *    C o n s t a n t s
  23.  */
  24.  
  25.  
  26. // SCODEs
  27. #define EXCHEXT_S_NOCRITERIA    MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 1)
  28. #define EXCHEXT_S_NOCHANGE        MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 2)
  29.  
  30. // Flag for Unicode strings
  31. #define EXCHEXT_UNICODE                    (0x80000000)
  32.  
  33. // Flag values for IExchExtCallback::GetVersion
  34. #define EECBGV_GETBUILDVERSION            (0x00000001)
  35. #define EECBGV_GETACTUALVERSION            (0x00000002)
  36. #define EECBGV_GETVIRTUALVERSION        (0x00000004)
  37.  
  38. // Build version value for IExchExtCallback::GetVersion
  39. #define EECBGV_BUILDVERSION_MAJOR        (0x000d0000)
  40. #define EECBGV_BUILDVERSION_MAJOR_MASK    (0xFFFF0000)
  41. #define EECBGV_BUILDVERSION_MINOR_MASK    (0x0000FFFF)
  42.  
  43. // Actual/Virtual version values for IExchExtCallback::GetVersion
  44. #define EECBGV_MSEXCHANGE_WIN31            (0x01010000)
  45. #define EECBGV_MSEXCHANGE_WIN95            (0x01020000)
  46. #define EECBGV_MSEXCHANGE_WINNT            (0x01030000)
  47. #define EECBGV_MSEXCHANGE_MAC            (0x01040000)
  48. #define EECBGV_VERSION_PRODUCT_MASK        (0xFF000000)
  49. #define EECBGV_VERSION_PLATFORM_MASK    (0x00FF0000)
  50. #define EECBGV_VERSION_MAJOR_MASK        (0x0000FF00)
  51. #define EECBGV_VERSION_MINOR_MASK        (0x000000FF)
  52.  
  53. // Flag values for IExchExtCallback::GetMenuPos
  54. #define EECBGMP_RANGE                    (0x00000001)
  55.  
  56. // Flag values for IExchExtCallback::GetNewMessageSite
  57. #define EECBGNMS_MODAL                    (0x00000001)
  58.  
  59. // Flag values for IExchExtCallback::ChooseFolder
  60. #define EECBCF_GETNAME                    (0x00000001)
  61. #define EECBCF_HIDENEW                    (0x00000002)
  62. #define EECBCF_PREVENTROOT                (0x00000004)
  63.  
  64. // Extensibility contexts used with IExchExt::Install
  65. #define EECONTEXT_SESSION                (0x00000001)
  66. #define EECONTEXT_VIEWER                (0x00000002)
  67. #define EECONTEXT_REMOTEVIEWER            (0x00000003)
  68. #define EECONTEXT_SEARCHVIEWER            (0x00000004)
  69. #define EECONTEXT_ADDRBOOK                (0x00000005)
  70. #define EECONTEXT_SENDNOTEMESSAGE        (0x00000006)
  71. #define EECONTEXT_READNOTEMESSAGE        (0x00000007)
  72. #define EECONTEXT_SENDPOSTMESSAGE        (0x00000008)
  73. #define EECONTEXT_READPOSTMESSAGE        (0x00000009)
  74. #define EECONTEXT_READREPORTMESSAGE        (0x0000000A)
  75. #define EECONTEXT_SENDRESENDMESSAGE        (0x0000000B)
  76. #define EECONTEXT_PROPERTYSHEETS        (0x0000000C)
  77. #define EECONTEXT_ADVANCEDCRITERIA        (0x0000000D)
  78. #define EECONTEXT_TASK                    (0x0000000E)
  79.  
  80. // Flag values for IExchExt::Install
  81. #define EE_MODAL                        (0x00000001)
  82.  
  83. // Toolbar ids used with IExchExtCommands::InstallCommands
  84. #define EETBID_STANDARD                    (0x00000001)
  85.  
  86. // Flag values for IExchExtCommands::QueryHelpText
  87. #define EECQHT_STATUS                    (0x00000001)
  88. #define EECQHT_TOOLTIP                    (0x00000002)
  89.  
  90. // Flag values for IExchExtMessageEvents::OnXComplete
  91. #define EEME_FAILED                        (0x00000001)
  92. #define EEME_COMPLETE_FAILED            (0x00000002)
  93.  
  94. // Flag values for IExchExtAttachedFileEvents::OpenSzFile
  95. #define EEAFE_OPEN                        (0x00000001)
  96. #define EEAFE_PRINT                        (0x00000002)
  97. #define EEAFE_QUICKVIEW                    (0x00000003)
  98.  
  99. // Flag values for IExchExtPropertySheets methods
  100. #define EEPS_MESSAGE                    (0x00000001)
  101. #define EEPS_FOLDER                        (0x00000002)
  102. #define EEPS_STORE                        (0x00000003)
  103. #define EEPS_TOOLSOPTIONS                (0x00000004)
  104.  
  105. // Flag values for IExchExtAdvancedCriteria::Install and ::SetFolder
  106. #define EEAC_INCLUDESUBFOLDERS            (0x00000001)
  107.  
  108.  
  109. /*
  110.  *    S t r u c t u r e s
  111.  */
  112.  
  113.  
  114. // Hook procedure for IExchExtCallback::ChooseFolder
  115. typedef UINT (STDAPICALLTYPE FAR * LPEECFHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
  116.  
  117. // Dialog information for IExchExtCallback::ChooseFolder
  118. typedef struct
  119. {
  120.     UINT cbLength;
  121.     HWND hwnd;
  122.     LPTSTR szCaption;
  123.     LPTSTR szLabel;
  124.     LPTSTR szHelpFile;
  125.     ULONG ulHelpID;
  126.     HINSTANCE hinst;
  127.     UINT uiDlgID;
  128.     LPEECFHOOKPROC lpeecfhp;
  129.     DWORD dwHookData;
  130.     ULONG ulFlags;
  131.     LPMDB pmdb;
  132.     LPMAPIFOLDER pfld;
  133.     LPTSTR szName;
  134.     DWORD dwReserved1;
  135.     DWORD dwReserved2;
  136.     DWORD dwReserved3;
  137. }
  138. EXCHEXTCHOOSEFOLDER, FAR * LPEXCHEXTCHOOSEFOLDER;
  139.  
  140. // Toolbar list entries for IExchExtCommands::InstallCommands
  141. typedef struct
  142. {
  143.     HWND hwnd;
  144.     ULONG tbid;
  145.     ULONG ulFlags;
  146.     UINT itbbBase;
  147. }
  148. TBENTRY, FAR * LPTBENTRY;
  149.  
  150.  
  151. /*
  152.  *    E x t e r n a l   T y p e s
  153.  */
  154.  
  155.  
  156. // Property sheet pages from Windows 95 prsht.h
  157. #ifndef _PRSHT_H_
  158. typedef struct _PROPSHEETPAGE;
  159. typedef struct _PROPSHEETPAGE FAR * LPPROPSHEETPAGE;
  160. #endif
  161.  
  162. // Toolbar adjust info from Windows 95 commctrl.h
  163. #ifndef _INC_COMMCTRL
  164. typedef struct _TBBUTTON;
  165. typedef struct _TBBUTTON FAR * LPTBBUTTON;
  166. #endif
  167.  
  168.  
  169. /*
  170.  *    S u p p o r t   I n t e r f a c e s
  171.  */
  172.  
  173.  
  174. // Forward reference
  175. #ifdef __cplusplus
  176. interface IExchExtModeless;
  177. #else
  178. typedef interface IExchExtModeless IExchExtModeless;
  179. #endif 
  180. typedef IExchExtModeless FAR* LPEXCHEXTMODELESS;
  181.  
  182.  
  183. /*
  184.  *  IExchExtModelessCallback
  185.  *
  186.  *  Purpose:
  187.  *      Interface which may be used by Exchange client
  188.  *      extensions that create modeless UI.
  189.  */
  190. #undef INTERFACE
  191. #define INTERFACE   IExchExtModelessCallback
  192. DECLARE_INTERFACE_(IExchExtModelessCallback, IUnknown)
  193. {
  194.     BEGIN_INTERFACE
  195.  
  196.     // *** IUnknown methods ***
  197.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
  198.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  199.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  200.   
  201.     // *** IExchExtModelessCallback methods ***
  202.     STDMETHOD(EnableModeless) (THIS_ HWND hwnd, BOOL fEnable) PURE;
  203.     STDMETHOD(AddWindow) (THIS) PURE;
  204.     STDMETHOD(ReleaseWindow) (THIS) PURE;
  205. };
  206. typedef IExchExtModelessCallback FAR * LPEXCHEXTMODELESSCALLBACK;
  207.  
  208.  
  209. /*
  210.  *    IExchExtCallback
  211.  *
  212.  *    Purpose:
  213.  *        Resource interface that may be used by Exchange client extensions.
  214.  */
  215. #undef INTERFACE
  216. #define INTERFACE   IExchExtCallback
  217.  
  218. DECLARE_INTERFACE_(IExchExtCallback, IUnknown)
  219. {
  220.     BEGIN_INTERFACE
  221.  
  222.     // *** IUnknown methods ***
  223.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
  224.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  225.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  226.  
  227.     // *** IExchExtCallback methods ***
  228.     STDMETHOD(GetVersion) (THIS_ ULONG FAR * lpulVersion, ULONG ulFlags) PURE;
  229.     STDMETHOD(GetWindow) (THIS_ HWND FAR * lphwnd) PURE;
  230.     STDMETHOD(GetMenu) (THIS_ HMENU FAR * lphmenu) PURE;
  231.     STDMETHOD(GetToolbar) (THIS_ ULONG tbid, HWND FAR * lphwndTb) PURE;
  232.     STDMETHOD(GetSession) (THIS_ LPMAPISESSION FAR * lppses, 
  233.                            LPADRBOOK FAR * lppab) PURE;
  234.     STDMETHOD(GetObject) (THIS_ LPMDB FAR * lppmdb, 
  235.                           LPMAPIPROP FAR * lppmp) PURE;
  236.     STDMETHOD(GetSelectionCount) (THIS_ ULONG FAR * lpceid) PURE;
  237.     STDMETHOD(GetSelectionItem) (THIS_ ULONG ieid, ULONG FAR * lpcbEid,
  238.                                  LPENTRYID FAR * lppeid, ULONG FAR * lpulType,
  239.                                  LPTSTR lpszMsgClass, ULONG cbMsgClass,
  240.                                  ULONG FAR * lpulMsgFlags, ULONG ulFlags) PURE;
  241.     STDMETHOD(GetMenuPos) (THIS_ ULONG cmdid, HMENU FAR * lphmenu,
  242.                            ULONG FAR * lpmposMin, ULONG FAR * lpmposMax,
  243.                            ULONG ulFlags) PURE;
  244.     STDMETHOD(GetSharedExtsDir) (THIS_ LPTSTR lpszDir, ULONG cchDir, 
  245.                                  ULONG ulFlags) PURE;
  246.     STDMETHOD(GetRecipients) (THIS_ LPADRLIST FAR * lppal) PURE;
  247.     STDMETHOD(SetRecipients) (THIS_ LPADRLIST lpal) PURE;
  248.     STDMETHOD(GetNewMessageSite) (THIS_ ULONG fComposeInFolder,
  249.                                   LPMAPIFOLDER pfldFocus,
  250.                                   LPPERSISTMESSAGE ppermsg,
  251.                                   LPMESSAGE FAR * ppmsg,
  252.                                   LPMAPIMESSAGESITE FAR * ppmms,
  253.                                   LPMAPIVIEWCONTEXT FAR * ppmvc,
  254.                                   ULONG ulFlags) PURE;
  255.     STDMETHOD(RegisterModeless) (THIS_ LPEXCHEXTMODELESS peem,
  256.                                  LPEXCHEXTMODELESSCALLBACK FAR * ppeemcb) PURE;
  257.     STDMETHOD(ChooseFolder) (THIS_ LPEXCHEXTCHOOSEFOLDER peecf) PURE;
  258. };
  259. typedef IExchExtCallback FAR * LPEXCHEXTCALLBACK;
  260.  
  261.  
  262. /*
  263.  *    E x t e n s i o n   I n t e r f a c e s
  264.  */
  265.  
  266.  
  267. /*
  268.  *    IExchExt
  269.  *
  270.  *    Purpose:
  271.  *        Central interface implemented by Exchange client extensions.
  272.  */
  273. #undef INTERFACE
  274. #define INTERFACE   IExchExt
  275.  
  276. DECLARE_INTERFACE_(IExchExt, IUnknown)
  277. {
  278.     BEGIN_INTERFACE
  279.  
  280.     // *** IUnknown methods ***
  281.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
  282.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  283.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  284.  
  285.     // *** IExchExt methods ***
  286.     STDMETHOD(Install) (THIS_ LPEXCHEXTCALLBACK lpeecb, 
  287.                         ULONG mecontext, ULONG ulFlags) PURE;
  288. };
  289. typedef IExchExt FAR * LPEXCHEXT;
  290.  
  291. // Type of function called by the client to load an extension
  292. typedef LPEXCHEXT (CALLBACK * LPFNEXCHEXTENTRY)(VOID);
  293.  
  294.  
  295. /*
  296.  *    IExchExtCommands
  297.  *
  298.  *    Purpose:
  299.  *        Interface implemented by Exchange client extensions that wish to
  300.  *        add additional commands to the client's menus.
  301.  */
  302. #undef INTERFACE
  303. #define INTERFACE   IExchExtCommands
  304.  
  305. DECLARE_INTERFACE_(IExchExtCommands, IUnknown)
  306. {
  307.     BEGIN_INTERFACE
  308.  
  309.     // *** IUnknown methods ***
  310.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
  311.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  312.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  313.  
  314.     // *** IExchExtCommands methods ***
  315.     STDMETHOD(InstallCommands) (THIS_ LPEXCHEXTCALLBACK lpeecb, HWND hwnd, 
  316.                                 HMENU hmenu, UINT FAR * lpcmdidBase, 
  317.                                 LPTBENTRY lptbeArray, UINT ctbe, 
  318.                                 ULONG ulFlags) PURE;
  319.     STDMETHOD_(VOID,InitMenu) (THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
  320.     STDMETHOD(DoCommand) (THIS_ LPEXCHEXTCALLBACK lpeecb, UINT cmdid) PURE;
  321.     STDMETHOD(Help) (THIS_ LPEXCHEXTCALLBACK lpeecb, UINT cmdid) PURE;
  322.     STDMETHOD(QueryHelpText) (THIS_ UINT cmdid, ULONG ulFlags,
  323.                               LPTSTR lpsz, UINT cch) PURE;
  324.     STDMETHOD(QueryButtonInfo) (THIS_ ULONG tbid, UINT itbb, LPTBBUTTON ptbb,
  325.                                 LPTSTR lpsz, UINT cch, ULONG ulFlags) PURE;
  326.     STDMETHOD(ResetToolbar) (THIS_ ULONG tbid, ULONG ulFlags) PURE;
  327. };
  328. typedef IExchExtCommands FAR * LPEXCHEXTCOMMANDS;
  329.  
  330.  
  331. /*
  332.  *    IExchExtUserEvents
  333.  *
  334.  *    Purpose:
  335.  *        Interface implemented by Exchange client extensions that wish to
  336.  *        take special action when the user does certain actions.
  337.  */
  338. #undef INTERFACE
  339. #define INTERFACE   IExchExtUserEvents
  340.  
  341. DECLARE_INTERFACE_(IExchExtUserEvents, IUnknown)
  342. {
  343.     BEGIN_INTERFACE
  344.  
  345.     // *** IUnknown methods ***
  346.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
  347.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  348.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  349.  
  350.     // *** IExchExtUserEvents methods ***
  351.     STDMETHOD_(VOID,OnSelectionChange) (THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
  352.     STDMETHOD_(VOID,OnObjectChange) (THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
  353. };
  354. typedef IExchExtUserEvents FAR * LPEXCHEXTUSEREVENTS;
  355.  
  356.  
  357. /*
  358.  *    IExchExtSessionEvents
  359.  *
  360.  *    Purpose:
  361.  *        Interface implemented by Exchange client extensions that wish to
  362.  *        take special action when certain events happen in the session.
  363.  */
  364. #undef INTERFACE
  365. #define INTERFACE   IExchExtSessionEvents
  366.  
  367. DECLARE_INTERFACE_(IExchExtSessionEvents, IUnknown)
  368. {
  369.     BEGIN_INTERFACE
  370.  
  371.     // *** IUnknown methods ***
  372.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
  373.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  374.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  375.  
  376.     // *** IExchExtEvents methods ***
  377.     STDMETHOD(OnDelivery)(THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
  378. };
  379. typedef IExchExtSessionEvents FAR * LPEXCHEXTSESSIONEVENTS;
  380.  
  381.  
  382. /*
  383.  *    IExchExtMessageEvents
  384.  *
  385.  *    Purpose:
  386.  *        Interface implemented by Exchange client extensions that wish to
  387.  *        take special action when certain events happen to messages.
  388.  */
  389. #undef INTERFACE
  390. #define INTERFACE   IExchExtMessageEvents
  391.  
  392. DECLARE_INTERFACE_(IExchExtMessageEvents, IUnknown)
  393. {
  394.     BEGIN_INTERFACE
  395.  
  396.     // *** IUnknown methods ***
  397.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
  398.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  399.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  400.  
  401.     // *** IExchExtMessageEvents methods ***
  402.     STDMETHOD(OnRead)(THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
  403.     STDMETHOD(OnReadComplete)(THIS_ LPEXCHEXTCALLBACK lpeecb, 
  404.                               ULONG ulFlags) PURE;
  405.     STDMETHOD(OnWrite)(THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
  406.     STDMETHOD(OnWriteComplete)(THIS_ LPEXCHEXTCALLBACK lpeecb, 
  407.                                ULONG ulFlags) PURE;
  408.     STDMETHOD(OnCheckNames)(THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
  409.     STDMETHOD(OnCheckNamesComplete)(THIS_ LPEXCHEXTCALLBACK lpeecb, 
  410.                                     ULONG ulFlags) PURE;
  411.     STDMETHOD(OnSubmit)(THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
  412.     STDMETHOD_(VOID, OnSubmitComplete)(THIS_ LPEXCHEXTCALLBACK lpeecb, 
  413.                                        ULONG ulFlags) PURE;
  414. };
  415. typedef IExchExtMessageEvents FAR * LPEXCHEXTMESSAGEEVENTS;
  416.  
  417.  
  418. /*
  419.  *    IExchExtAttachedFileEvents
  420.  *
  421.  *    Purpose:
  422.  *        Interface implemented by Exchange client extensions that wish to
  423.  *        take special action when certain events happen to attached files.
  424.  */
  425. #undef INTERFACE
  426. #define INTERFACE   IExchExtAttachedFileEvents
  427.  
  428. DECLARE_INTERFACE_(IExchExtAttachedFileEvents, IUnknown)
  429. {
  430.     BEGIN_INTERFACE
  431.  
  432.     // *** IUnknown methods ***
  433.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
  434.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  435.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  436.  
  437.     // *** IExchExtAttachedFileEvents methods ***
  438.     STDMETHOD(OnReadPattFromSzFile)(THIS_ LPATTACH lpatt, LPTSTR lpszFile,
  439.                                     ULONG ulFlags) PURE;
  440.     STDMETHOD(OnWritePattToSzFile)(THIS_ LPATTACH lpatt, LPTSTR lpszFile,
  441.                                    ULONG ulFlags) PURE;
  442.     STDMETHOD(QueryDisallowOpenPatt)(THIS_ LPATTACH lpatt) PURE;
  443.     STDMETHOD(OnOpenPatt)(THIS_ LPATTACH lpatt) PURE;
  444.     STDMETHOD(OnOpenSzFile)(THIS_ LPTSTR lpszFile, ULONG ulFlags) PURE;
  445. };
  446. typedef IExchExtAttachedFileEvents FAR * LPEXCHEXTATTACHEDFILEEVENTS;
  447.  
  448.  
  449. /*
  450.  *    IExchExtPropertySheets
  451.  *
  452.  *    Purpose:
  453.  *        Interface implemented by Exchange client extensions that wish
  454.  *        to add additional pages to the client's object property sheets.
  455.  */
  456. #undef INTERFACE
  457. #define INTERFACE   IExchExtPropertySheets
  458.  
  459. DECLARE_INTERFACE_(IExchExtPropertySheets, IUnknown)
  460. {
  461.     BEGIN_INTERFACE
  462.  
  463.     // *** IUnknown methods ***
  464.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
  465.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  466.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  467.  
  468.     // *** IExchExtPropertySheet methods ***
  469.     STDMETHOD_(ULONG,GetMaxPageCount) (THIS_ ULONG ulFlags) PURE;
  470.     STDMETHOD(GetPages) (THIS_ LPEXCHEXTCALLBACK lpeecb, ULONG ulFlags,
  471.                          LPPROPSHEETPAGE lppsp, ULONG FAR * lpcpsp) PURE;
  472.     STDMETHOD_(VOID,FreePages) (THIS_ LPPROPSHEETPAGE lppsp, 
  473.                                 ULONG ulFlags, ULONG cpsp) PURE;
  474. };
  475. typedef IExchExtPropertySheets FAR * LPEXCHEXTPROPERTYSHEETS;
  476.  
  477.  
  478. /*
  479.  *    IExchExtAdvancedCriteria
  480.  *
  481.  *    Purpose:
  482.  *        Interface implemented by Exchange client extensions that wish to
  483.  *        implement an advanced criteria dialog.
  484.  */
  485. #undef INTERFACE
  486. #define INTERFACE   IExchExtAdvancedCriteria
  487.  
  488. DECLARE_INTERFACE_(IExchExtAdvancedCriteria, IUnknown)
  489. {
  490.     BEGIN_INTERFACE
  491.  
  492.     // *** IUnknown methods ***
  493.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
  494.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  495.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  496.  
  497.     // *** IExchExtAdvancedCriteria methods ***
  498.     STDMETHOD(InstallAdvancedCriteria) (THIS_ HWND hwnd, LPSRestriction lpres, 
  499.                                         BOOL fNot, LPENTRYLIST lpeidl, 
  500.                                         ULONG ulFlags) PURE;
  501.     STDMETHOD(DoDialog) (THIS) PURE;
  502.     STDMETHOD_(VOID,Clear) (THIS) PURE;
  503.     STDMETHOD_(VOID,SetFolders) (THIS_ LPENTRYLIST lpeidl, ULONG ulFlags) PURE;
  504.     STDMETHOD(QueryRestriction) (THIS_ LPVOID lpvAllocBase, 
  505.                                  LPSRestriction FAR * lppres,
  506.                                  LPSPropTagArray FAR * lppPropTags,
  507.                                  LPMAPINAMEID FAR * FAR * lpppPropNames,
  508.                                  BOOL * lpfNot, LPTSTR lpszDesc, ULONG cchDesc, 
  509.                                  ULONG ulFlags) PURE;
  510.     STDMETHOD_(VOID,UninstallAdvancedCriteria) (THIS) PURE;
  511. };
  512. typedef IExchExtAdvancedCriteria FAR * LPEXCHEXTADVANCEDCRITERIA;
  513.  
  514.  
  515. /*
  516.  *  IExchExtModeless
  517.  *
  518.  *    Purpose:
  519.  *        Interface implemented by Exchange client extensions that wish
  520.  *        to create modeless UI.
  521.  */
  522. #undef INTERFACE
  523. #define INTERFACE   IExchExtModeless
  524.  
  525. DECLARE_INTERFACE_(IExchExtModeless, IUnknown)
  526. {
  527.     BEGIN_INTERFACE
  528.  
  529.     // *** IUnknown methods ***
  530.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
  531.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  532.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  533.  
  534.     // *** IExchExtModeless methods ***
  535.     STDMETHOD(TranslateAccelerator) (THIS_ LPMSG pmsg) PURE;
  536.     STDMETHOD(EnableModeless) (THIS_ BOOL fEnable) PURE;
  537. };
  538.  
  539.  
  540. /*
  541.  *    G U I D s
  542.  */
  543.  
  544.  
  545. #define DEFINE_EXCHEXTGUID(name, b) \
  546.     DEFINE_GUID(name, 0x00020D00 | (b), 0, 0, 0xC0,0,0,0,0,0,0,0x46)
  547.  
  548. #ifndef NOEXCHEXTGUIDS
  549. DEFINE_EXCHEXTGUID(IID_IExchExtCallback,            0x10);
  550. DEFINE_EXCHEXTGUID(IID_IExchExt,                    0x11);
  551. DEFINE_EXCHEXTGUID(IID_IExchExtCommands,            0x12);
  552. DEFINE_EXCHEXTGUID(IID_IExchExtUserEvents,            0x13);
  553. DEFINE_EXCHEXTGUID(IID_IExchExtSessionEvents,        0x14);
  554. DEFINE_EXCHEXTGUID(IID_IExchExtMessageEvents,        0x15);
  555. DEFINE_EXCHEXTGUID(IID_IExchExtAttachedFileEvents,    0x16);
  556. DEFINE_EXCHEXTGUID(IID_IExchExtPropertySheets,        0x17);
  557. DEFINE_EXCHEXTGUID(IID_IExchExtAdvancedCriteria,    0x18);
  558. DEFINE_EXCHEXTGUID(IID_IExchExtModeless,            0x19);
  559. DEFINE_EXCHEXTGUID(IID_IExchExtModelessCallback,    0x1a);
  560. #endif // NOEXCHEXTGUIDS
  561.  
  562.  
  563. /*
  564.  *    C M D I D s
  565.  */
  566.  
  567.  
  568. // File
  569. #define EECMDID_File                                10
  570. #define EECMDID_FileOpen                            11
  571. #define EECMDID_FileSend                            12
  572. #define EECMDID_FileSave                             13
  573. #define EECMDID_FileSaveAs                            14
  574. #define EECMDID_FileMove                              16
  575. #define EECMDID_FileCopy                              17
  576. #define EECMDID_FilePrint                            25
  577. #define EECMDID_FileNewEntry                        18
  578. #define EECMDID_FileNewMessage                        19
  579. #define EECMDID_FileNewFolder                        20
  580. #define EECMDID_FileAddToPAB                        29
  581. #define EECMDID_FileDelete                            21
  582. #define EECMDID_FileRename                            22
  583. #define EECMDID_FileProperties                        23
  584. #define EECMDID_FilePropertiesRecipients            24
  585. #define EECMDID_FileClose                            30
  586. #define EECMDID_FileExit                            32
  587. #define EECMDID_FileExitAndLogOff                    33
  588.  
  589. // Edit
  590. #define EECMDID_Edit                                40
  591. #define EECMDID_EditUndo                            41
  592. #define EECMDID_EditCut                             42
  593. #define EECMDID_EditCopy                            43
  594. #define EECMDID_EditPaste                           44
  595. #define EECMDID_EditPasteSpecial                       45
  596. #define EECMDID_EditSelectAll                       46
  597. #define    EECMDID_EditMarkAsRead                        49
  598. #define EECMDID_EditMarkAsUnread                    50
  599. #define EECMDID_EditMarkToRetrieve                    52
  600. #define EECMDID_EditMarkToRetrieveACopy                53
  601. #define EECMDID_EditMarkToDelete                    54
  602. #define EECMDID_EditUnmarkAll                        55
  603. #define EECMDID_EditFind                            56
  604. #define EECMDID_EditReplace                         57
  605. #define EECMDID_EditLinks                           59
  606. #define EECMDID_EditObject                          60
  607. #define EECMDID_EditObjectConvert                    61
  608. #ifdef DBCS
  609. #define    EECMDID_EditFullShape                        62
  610. #define    EECMDID_EditHiraKataAlpha                    63
  611. #define    EECMDID_EditHangAlpha                        64
  612. #define    EECMDID_EditHanja                            65
  613. #define    EECMDID_EditRoman                            66
  614. #define    EECMDID_EditCode                            67    
  615. #endif
  616.  
  617. // View
  618. #define EECMDID_View                                70
  619. #define EECMDID_ViewFolders                         71
  620. #define EECMDID_ViewToolbar                         72
  621. #define EECMDID_ViewFormattingToolbar               73
  622. #define EECMDID_ViewStatusBar                       74
  623. #define EECMDID_ViewNewWindow                        75
  624. #define EECMDID_ViewColumns                            79
  625. #define EECMDID_ViewSort                            78
  626. #define EECMDID_ViewFilter                            80
  627. #define EECMDID_ViewBccBox                          91
  628. #define EECMDID_ViewPrevious                           87
  629. #define EECMDID_ViewNext                               88
  630. #ifdef DBCS                                            
  631. #define EECMDID_ViewWritingMode                        89
  632. #define EECMDID_ViewImeStatus                        94
  633. #endif
  634.                                                     
  635. // Insert                                            
  636. #define EECMDID_Insert                              100
  637. #define EECMDID_InsertFile                            101
  638. #define EECMDID_InsertMessage                        102
  639. #define EECMDID_InsertObject                        103
  640. #define EECMDID_InsertInkObject                        104
  641.                                                     
  642. // Format                                            
  643. #define EECMDID_Format                              110
  644. #define EECMDID_FormatFont                          111
  645. #define EECMDID_FormatParagraph                     112
  646.                                                     
  647. // Tools                                            
  648. #define EECMDID_Tools                                120
  649. #define EECMDID_ToolsDeliverNowUsing                121
  650. #define EECMDID_ToolsDeliverNow                        122
  651. #define EECMDID_ToolsSpelling                        131
  652. #define EECMDID_ToolsAddressBook                    123
  653. #define EECMDID_ToolsCheckNames                     133
  654. #define EECMDID_ToolsFind                            124
  655. #define EECMDID_ToolsConnect                        126
  656. #define EECMDID_ToolsUpdateHeaders                    127
  657. #define EECMDID_ToolsTransferMail                    128
  658. #define EECMDID_ToolsDisconnect                        129
  659. #define EECMDID_ToolsRemoteMail                        130
  660. #define EECMDID_ToolsCustomizeToolbar                134
  661. #define EECMDID_ToolsServices                        135
  662. #define EECMDID_ToolsOptions                        136
  663. #ifdef DBCS                                            
  664. #define    EECMDID_ToolsWordRegistration                137
  665. #endif                                                
  666.                                                     
  667. // Compose                                            
  668. #define EECMDID_Compose                                150
  669. #define EECMDID_ComposeNewMessage                    151
  670. #define EECMDID_ComposeReplyToSender                154
  671. #define EECMDID_ComposeReplyToAll                    155
  672. #define EECMDID_ComposeForward                        156
  673.                                                     
  674. // Help
  675. #define EECMDID_Help                                160
  676. #define EECMDID_HelpMicrosoftExchangeHelpTopics        161
  677. #define EECMDID_HelpAboutMicrosoftExchange            162
  678.  
  679. // Header                                            
  680. #define EECMDID_CtxHeader                            203
  681. #define EECMDID_CtxHeaderSortAscending                204
  682. #define EECMDID_CtxHeaderSortDescending                205
  683.                                                     
  684. // In Folder                                        
  685. #define EECMDID_CtxInFolder                            206
  686. #define EECMDID_CtxInFolderChoose                    207
  687.                                                     
  688. // Container                                        
  689. #define EECMDID_CtxContainer                        208
  690. #define EECMDID_CtxContainerProperties                209
  691.  
  692. // Standard Toolbar
  693. #define EECMDID_Toolbar                                220
  694. #define EECMDID_ToolbarPrint                        221
  695. #define EECMDID_ToolbarReadReceipt                    222
  696. #define EECMDID_ToolbarImportanceHigh                223
  697. #define EECMDID_ToolbarImportanceLow                224
  698. #define EECMDID_ToolbarFolderList                    225
  699. #define EECMDID_ToolbarOpenParent                    226
  700. #define EECMDID_ToolbarInbox                        76
  701. #define EECMDID_ToolbarOutbox                        77
  702.  
  703. // Formatting Toolbar
  704. #define EECMDID_Formatting                            230
  705. #define EECMDID_FormattingFont                        231
  706. #define EECMDID_FormattingSize                        232
  707. #define EECMDID_FormattingColor                        233
  708. #define EECMDID_FormattingColorAuto                    234
  709. #define EECMDID_FormattingColor1                    235
  710. #define EECMDID_FormattingColor2                    236
  711. #define EECMDID_FormattingColor3                    237
  712. #define EECMDID_FormattingColor4                    238
  713. #define EECMDID_FormattingColor5                    239
  714. #define EECMDID_FormattingColor6                    240
  715. #define EECMDID_FormattingColor7                    241
  716. #define EECMDID_FormattingColor8                    242
  717. #define EECMDID_FormattingColor9                    243
  718. #define EECMDID_FormattingColor10                    244
  719. #define EECMDID_FormattingColor11                    245
  720. #define EECMDID_FormattingColor12                    246
  721. #define EECMDID_FormattingColor13                    247
  722. #define EECMDID_FormattingColor14                    248
  723. #define EECMDID_FormattingColor15                    249
  724. #define EECMDID_FormattingColor16                    250
  725. #define EECMDID_FormattingBold                        251
  726. #define EECMDID_FormattingItalic                    252
  727. #define EECMDID_FormattingUnderline                    253
  728. #define EECMDID_FormattingBullets                    254
  729. #define EECMDID_FormattingDecreaseIndent            255
  730. #define EECMDID_FormattingIncreaseIndent            256
  731. #define EECMDID_FormattingLeft                        257
  732. #define EECMDID_FormattingCenter                    258
  733. #define EECMDID_FormattingRight                        259
  734.  
  735. // Note accelerators
  736. #define EECMDID_Accel                                270
  737. #define EECMDID_AccelFont                            271
  738. #define EECMDID_AccelSize                            272
  739. #define EECMDID_AccelSizePlus1                        273
  740. #define EECMDID_AccelSizeMinus1                        274
  741. #define EECMDID_AccelBold                            275
  742. #define EECMDID_AccelItalic                            276
  743. #define EECMDID_AccelUnderline                        277
  744. #define EECMDID_AccelLeft                            278
  745. #define EECMDID_AccelCenter                            279
  746. #define EECMDID_AccelRight                            280
  747. #define EECMDID_AccelBullets                        281
  748. #define EECMDID_AccelNoFormatting                    282
  749. #define EECMDID_AccelRepeatFind                        283
  750. #define EECMDID_AccelContextHelp                    284
  751. #define EECMDID_AccelNextWindow                        285
  752. #define EECMDID_AccelPrevWindow                        286
  753. #define EECMDID_AccelCtrlTab                        287
  754. #define EECMDID_AccelUndo                            288
  755. #define EECMDID_AccelCut                            289
  756. #define EECMDID_AccelCopy                            290
  757. #define EECMDID_AccelPaste                            291
  758. #define EECMDID_AccelSubject                        292
  759. #define EECMDID_AccelContextHelpOff                    293
  760. #define EECMDID_AccelDecreaseIndent                    294
  761. #define EECMDID_AccelIncreaseIndent                    295
  762. #define EECMDID_AccelColor                            296
  763.  
  764. // Edit.Object
  765. #define EECMDID_ObjectMin                            300
  766. #define EECMDID_ObjectMax                            399
  767.  
  768. // Tools.Remote Mail
  769. #define EECMDID_RemoteMailMin                        600
  770. #define EECMDID_RemoteMailMax                        699
  771.  
  772. // Tools.Deliver Now Using
  773. #define EECMDID_DeliverNowUsingMin                    700
  774. #define EECMDID_DeliverNowUsingMax                    799
  775.  
  776. // Form verbs
  777. #define EECMDID_FormVerbMin                            800
  778. #define EECMDID_FormVerbMax                            899
  779.  
  780. // For backward compatibility with earlier header versions
  781. #define EECMDID_ViewInbox                EECMDID_ToolbarInbox
  782. #define EECMDID_ViewOutbox                EECMDID_ToolbarOutbox
  783. #define EECMDID_ViewItemAbove            EECMDID_ViewPrevious
  784. #define EECMDID_ViewItemBelow           EECMDID_ViewNext
  785. #define EECMDID_ToolsFindItem            EECMDID_ToolsFind
  786. #define EECMDID_HelpUsersGuideContents    EECMDID_HelpMicrosoftExchangeHelpTopics
  787. #define EECMDID_HelpAbout                EECMDID_HelpAboutMicrosoftExchange
  788.  
  789. #pragma option pop /*P_O_Pop*/
  790. #endif // EXCHEXT_H
  791.