home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / sdk / winh / exchext.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-11  |  29.6 KB  |  787 lines

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