Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

336 lines
14 KiB

  1. /*
  2. * o e d o c s . h
  3. *
  4. * Purpose:
  5. *
  6. * History
  7. *
  8. * Copyright (C) Microsoft Corp. 1995, 1996.
  9. */
  10. #ifndef _OEDOCS_H
  11. #define _OEDOCS_H
  12. #include "basedisp.h"
  13. #include "msoeobj.h"
  14. #include "simpdata.h"
  15. #include "dispex.h"
  16. #include "msdatsrc.h"
  17. interface IMimeMessage;
  18. interface IMessageTable;
  19. class COEMessageCollection;
  20. typedef struct OEMSGDATA_tag
  21. {
  22. LPSTR pszSubj,
  23. pszTo,
  24. pszCc,
  25. pszFrom;
  26. MESSAGEID msgid;
  27. FILETIME ftReceived;
  28. } OEMSGDATA, *POEMSGDATA;
  29. class COEFolderCollection:
  30. public IOEFolderCollection,
  31. public CBaseDisp
  32. {
  33. public:
  34. // ---------------------------------------------------------------------------
  35. // IUnknown members
  36. // ---------------------------------------------------------------------------
  37. virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj)
  38. { return PrivateQueryInterface(riid, ppvObj); };
  39. virtual STDMETHODIMP_(ULONG) AddRef(void)
  40. { return ++m_cRef; };
  41. virtual STDMETHODIMP_(ULONG) Release(void)
  42. { m_cRef--; if (m_cRef == 0) {delete this; return 0;} return m_cRef; };
  43. // *** IDispatch)
  44. virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo)
  45. { return CBaseDisp::GetTypeInfoCount(pctinfo); };
  46. virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo **pptinfo)
  47. { return CBaseDisp::GetTypeInfo(itinfo, lcid, pptinfo); };
  48. virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgdispid)
  49. { return CBaseDisp::GetIDsOfNames(riid, rgszNames, cNames, lcid, rgdispid); };
  50. virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdispparams, VARIANT *pvarResult, EXCEPINFO *pexcepinfo, UINT *puArgErr)
  51. { return CBaseDisp::Invoke(dispidMember, riid, lcid, wFlags, pdispparams, pvarResult, pexcepinfo, puArgErr); };
  52. // *** IOEFolderCollection **
  53. virtual HRESULT STDMETHODCALLTYPE put_length(long v);
  54. virtual HRESULT STDMETHODCALLTYPE get_length(long * p);
  55. virtual HRESULT STDMETHODCALLTYPE get__newEnum(IUnknown **p);
  56. virtual HRESULT STDMETHODCALLTYPE item(VARIANT name, VARIANT index, IDispatch** pdisp);
  57. COEFolderCollection(IUnknown *pUnkOuter=NULL);
  58. virtual ~COEFolderCollection();
  59. HRESULT Init();
  60. private:
  61. ULONG m_cRef;
  62. virtual HRESULT PrivateQueryInterface(REFIID riid, LPVOID * ppvObj);
  63. HRESULT FindFolderByName(BSTR bstrName, IDispatch** ppdisp);
  64. HRESULT FindFolderByIndex(LONG l, IDispatch** ppdisp);
  65. };
  66. class COEFolder:
  67. public IOEFolder,
  68. public CBaseDisp
  69. {
  70. public:
  71. // ---------------------------------------------------------------------------
  72. // IUnknown members
  73. // ---------------------------------------------------------------------------
  74. virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj)
  75. { return PrivateQueryInterface(riid, ppvObj); };
  76. virtual STDMETHODIMP_(ULONG) AddRef(void)
  77. { return ++m_cRef; };
  78. virtual STDMETHODIMP_(ULONG) Release(void)
  79. { m_cRef--; if (m_cRef == 0) {delete this; return 0;} return m_cRef; };
  80. // *** IDispatch)
  81. virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo)
  82. { return CBaseDisp::GetTypeInfoCount(pctinfo); };
  83. virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo **pptinfo)
  84. { return CBaseDisp::GetTypeInfo(itinfo, lcid, pptinfo); };
  85. virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgdispid)
  86. { return CBaseDisp::GetIDsOfNames(riid, rgszNames, cNames, lcid, rgdispid); };
  87. virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdispparams, VARIANT *pvarResult, EXCEPINFO *pexcepinfo, UINT *puArgErr)
  88. { return CBaseDisp::Invoke(dispidMember, riid, lcid, wFlags, pdispparams, pvarResult, pexcepinfo, puArgErr); };
  89. // *** IOEFolder**
  90. virtual HRESULT STDMETHODCALLTYPE get_messages(IOEMessageCollection **p);
  91. virtual HRESULT STDMETHODCALLTYPE get_name(BSTR *pbstr);
  92. virtual HRESULT STDMETHODCALLTYPE put_name(BSTR bstr);
  93. virtual HRESULT STDMETHODCALLTYPE get_size(LONG *pl);
  94. virtual HRESULT STDMETHODCALLTYPE get_unread(LONG *pl);
  95. virtual HRESULT STDMETHODCALLTYPE get_count(LONG *pl);
  96. virtual HRESULT STDMETHODCALLTYPE get_id(LONG *pl);
  97. COEFolder();
  98. virtual ~COEFolder();
  99. HRESULT Init(IMessageFolder *pFolder);
  100. private:
  101. ULONG m_cRef;
  102. IMessageFolder *m_pFolder;
  103. IOEMessageCollection *m_pMessages;
  104. FOLDERINFO m_fi;
  105. virtual HRESULT PrivateQueryInterface(REFIID riid, LPVOID * ppvObj);
  106. };
  107. class COEMessageCollection:
  108. public IOEMessageCollection,
  109. public CBaseDisp
  110. {
  111. public:
  112. // ---------------------------------------------------------------------------
  113. // IUnknown members
  114. // ---------------------------------------------------------------------------
  115. virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj)
  116. { return PrivateQueryInterface(riid, ppvObj); };
  117. virtual STDMETHODIMP_(ULONG) AddRef(void)
  118. { return ++m_cRef; };
  119. virtual STDMETHODIMP_(ULONG) Release(void)
  120. { m_cRef--; if (m_cRef == 0) {delete this; return 0;} return m_cRef; };
  121. // *** IDispatch)
  122. virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo)
  123. { return CBaseDisp::GetTypeInfoCount(pctinfo); };
  124. virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo **pptinfo)
  125. { return CBaseDisp::GetTypeInfo(itinfo, lcid, pptinfo); };
  126. virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgdispid)
  127. { return CBaseDisp::GetIDsOfNames(riid, rgszNames, cNames, lcid, rgdispid); };
  128. virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdispparams, VARIANT *pvarResult, EXCEPINFO *pexcepinfo, UINT *puArgErr)
  129. { return CBaseDisp::Invoke(dispidMember, riid, lcid, wFlags, pdispparams, pvarResult, pexcepinfo, puArgErr); };
  130. // *** IOEFolderCollection **
  131. virtual HRESULT STDMETHODCALLTYPE put_length(long v);
  132. virtual HRESULT STDMETHODCALLTYPE get_length(long * p);
  133. virtual HRESULT STDMETHODCALLTYPE get__newEnum(IUnknown **p);
  134. virtual HRESULT STDMETHODCALLTYPE item(VARIANT name, VARIANT index, IDispatch** pdisp);
  135. COEMessageCollection(IUnknown *pUnkOuter=NULL);
  136. virtual ~COEMessageCollection();
  137. HRESULT Init(IMessageFolder *pFolder);
  138. private:
  139. ULONG m_cRef;
  140. IMessageFolder *m_pFolder;
  141. IMessageTable *m_pTable;
  142. virtual HRESULT PrivateQueryInterface(REFIID riid, LPVOID * ppvObj);
  143. HRESULT FindMessageByIndex(LONG l, IDispatch** ppdisp);
  144. };
  145. class COEMessage:
  146. public IOEMessage,
  147. public CBaseDisp
  148. {
  149. public:
  150. // ---------------------------------------------------------------------------
  151. // IUnknown members
  152. // ---------------------------------------------------------------------------
  153. virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj)
  154. { return PrivateQueryInterface(riid, ppvObj); };
  155. virtual STDMETHODIMP_(ULONG) AddRef(void)
  156. { return ++m_cRef; };
  157. virtual STDMETHODIMP_(ULONG) Release(void)
  158. { m_cRef--; if (m_cRef == 0) {delete this; return 0;} return m_cRef; };
  159. // *** IDispatch)
  160. virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo)
  161. { return CBaseDisp::GetTypeInfoCount(pctinfo); };
  162. virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo **pptinfo)
  163. { return CBaseDisp::GetTypeInfo(itinfo, lcid, pptinfo); };
  164. virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgdispid)
  165. { return CBaseDisp::GetIDsOfNames(riid, rgszNames, cNames, lcid, rgdispid); };
  166. virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdispparams, VARIANT *pvarResult, EXCEPINFO *pexcepinfo, UINT *puArgErr)
  167. { return CBaseDisp::Invoke(dispidMember, riid, lcid, wFlags, pdispparams, pvarResult, pexcepinfo, puArgErr); };
  168. // *** IOEMessage**
  169. virtual HRESULT STDMETHODCALLTYPE get_subject(BSTR *pbstr);
  170. virtual HRESULT STDMETHODCALLTYPE put_subject(BSTR bstr);
  171. virtual HRESULT STDMETHODCALLTYPE get_to(BSTR *pbstr);
  172. virtual HRESULT STDMETHODCALLTYPE put_to(BSTR bstr);
  173. virtual HRESULT STDMETHODCALLTYPE get_cc(BSTR *pbstr);
  174. virtual HRESULT STDMETHODCALLTYPE put_cc(BSTR bstr);
  175. virtual HRESULT STDMETHODCALLTYPE get_sender(BSTR *pbstr);
  176. virtual HRESULT STDMETHODCALLTYPE put_sender(BSTR bstr);
  177. virtual HRESULT STDMETHODCALLTYPE get_text(BSTR *pbstr);
  178. virtual HRESULT STDMETHODCALLTYPE put_text(BSTR bstr);
  179. virtual HRESULT STDMETHODCALLTYPE get_html(BSTR *pbstr);
  180. virtual HRESULT STDMETHODCALLTYPE put_html(BSTR bstr);
  181. virtual HRESULT STDMETHODCALLTYPE get_date(BSTR *pbstr);
  182. virtual HRESULT STDMETHODCALLTYPE get_url(BSTR *pbstr);
  183. virtual HRESULT STDMETHODCALLTYPE send();
  184. COEMessage();
  185. virtual ~COEMessage();
  186. HRESULT Init(IMimeMessage *pMsg, IMessageFolder *pFolder, OEMSGDATA *pMsgData);
  187. HRESULT BindToMessage();
  188. private:
  189. ULONG m_cRef;
  190. IMimeMessage *m_pMsg;
  191. OEMSGDATA *m_pMsgData;
  192. IMessageFolder *m_pFolder;
  193. virtual HRESULT PrivateQueryInterface(REFIID riid, LPVOID * ppvObj);
  194. };
  195. HRESULT CreateInstance_OEMail(IUnknown *pUnkOuter, IUnknown **ppUnknown);
  196. HRESULT CreateInstance_OEMsgTable(IUnknown *pUnkOuter, IUnknown **ppUnknown);
  197. class COEMsgTable:
  198. public OLEDBSimpleProvider,
  199. public CBaseDisp,
  200. public IOEMsgList,
  201. public IDispatchEx
  202. {
  203. public:
  204. // ---------------------------------------------------------------------------
  205. // IUnknown members
  206. // ---------------------------------------------------------------------------
  207. virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj)
  208. { return PrivateQueryInterface(riid, ppvObj); };
  209. virtual STDMETHODIMP_(ULONG) AddRef(void)
  210. { return ++m_cRef; };
  211. virtual STDMETHODIMP_(ULONG) Release(void)
  212. { m_cRef--; if (m_cRef == 0) {delete this; return 0;} return m_cRef; };
  213. // OLEDBSimpleProvider
  214. virtual HRESULT STDMETHODCALLTYPE getRowCount(long *pcRows);
  215. virtual HRESULT STDMETHODCALLTYPE getColumnCount(long *pcColumns);
  216. virtual HRESULT STDMETHODCALLTYPE getRWStatus(long iRow, long iColumn, OSPRW *prwStatus);
  217. virtual HRESULT STDMETHODCALLTYPE getVariant(long iRow, long iColumn, OSPFORMAT format, VARIANT __RPC_FAR *pVar);
  218. virtual HRESULT STDMETHODCALLTYPE setVariant(long iRow, long iColumn, OSPFORMAT format, VARIANT Var);
  219. virtual HRESULT STDMETHODCALLTYPE getLocale(BSTR *pbstrLocale);
  220. virtual HRESULT STDMETHODCALLTYPE deleteRows(long iRow, long cRows, long *pcRowsDeleted);
  221. virtual HRESULT STDMETHODCALLTYPE insertRows(long iRow, long cRows, long *pcRowsInserted);
  222. virtual HRESULT STDMETHODCALLTYPE find(long iRowStart, long iColumn, VARIANT val, OSPFIND findFlags, OSPCOMP compType, long *piRowFound);
  223. virtual HRESULT STDMETHODCALLTYPE addOLEDBSimpleProviderListener(OLEDBSimpleProviderListener *pospIListener);
  224. virtual HRESULT STDMETHODCALLTYPE removeOLEDBSimpleProviderListener(OLEDBSimpleProviderListener *pospIListener);
  225. virtual HRESULT STDMETHODCALLTYPE isAsync(BOOL *pbAsynch);
  226. virtual HRESULT STDMETHODCALLTYPE getEstimatedRows(long *piRows);
  227. virtual HRESULT STDMETHODCALLTYPE stopTransfer();
  228. // *** IDispatch)
  229. virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo)
  230. { return CBaseDisp::GetTypeInfoCount(pctinfo); };
  231. virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo **pptinfo)
  232. { return CBaseDisp::GetTypeInfo(itinfo, lcid, pptinfo); };
  233. virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgdispid)
  234. { return CBaseDisp::GetIDsOfNames(riid, rgszNames, cNames, lcid, rgdispid); };
  235. virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdispparams, VARIANT *pvarResult, EXCEPINFO *pexcepinfo, UINT *puArgErr)
  236. { return CBaseDisp::Invoke(dispidMember, riid, lcid, wFlags, pdispparams, pvarResult, pexcepinfo, puArgErr); };
  237. // *** IDispatchEx ***
  238. virtual HRESULT STDMETHODCALLTYPE GetDispID(BSTR bstrName, DWORD grfdex, DISPID *pid);
  239. virtual HRESULT STDMETHODCALLTYPE InvokeEx(DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller);
  240. virtual HRESULT STDMETHODCALLTYPE DeleteMemberByName(BSTR bstrName, DWORD grfdex);
  241. virtual HRESULT STDMETHODCALLTYPE DeleteMemberByDispID(DISPID id);
  242. virtual HRESULT STDMETHODCALLTYPE GetMemberProperties(DISPID id, DWORD grfdexFetch, DWORD *pgrfdex);
  243. virtual HRESULT STDMETHODCALLTYPE GetMemberName(DISPID id, BSTR *pbstrName);
  244. virtual HRESULT STDMETHODCALLTYPE GetNextDispID(DWORD grfdex, DISPID id, DISPID *pid);
  245. virtual HRESULT STDMETHODCALLTYPE GetNameSpaceParent(IUnknown **ppunk);
  246. // ** IOEMsgList **
  247. virtual HRESULT STDMETHODCALLTYPE put_sortColumn(BSTR bstr);
  248. virtual HRESULT STDMETHODCALLTYPE get_sortColumn(BSTR *pbstr);
  249. virtual HRESULT STDMETHODCALLTYPE put_sortDirection(VARIANT_BOOL v);
  250. virtual HRESULT STDMETHODCALLTYPE get_sortDirection(VARIANT_BOOL *pv);
  251. virtual HRESULT STDMETHODCALLTYPE test();
  252. COEMsgTable();
  253. virtual ~COEMsgTable();
  254. HRESULT Init();
  255. private:
  256. ULONG m_cRef;
  257. IMessageTable *m_pTable;
  258. OLEDBSimpleProviderListener *m_pDSListen;
  259. DataSourceListener *m_pDataSrcListener;
  260. BOOL m_fAsc;
  261. COLUMN_ID m_col;
  262. virtual HRESULT PrivateQueryInterface(REFIID riid, LPVOID * ppvObj);
  263. };
  264. #endif //_OEDOCS_H