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.

185 lines
7.2 KiB

  1. /*
  2. * a d d r o b j . h
  3. *
  4. *
  5. * Purpose:
  6. * implements an Address object. An ole object representation for
  7. * a resolved email address. Wraps a CAddress object
  8. * also implements an IDataObj for drag-drop
  9. *
  10. * Copyright (C) Microsoft Corp. 1993, 1994.
  11. *
  12. * Owner: brettm
  13. *
  14. */
  15. #ifndef _ADDROBJ_H
  16. #define _ADDROBJ_H
  17. #include <richedit.h>
  18. #ifndef _RICHOLE_H // richole.h has no #ifdef around it...
  19. #define _RICHOLE_H
  20. #include <richole.h>
  21. #endif
  22. #include <addrlist.h>
  23. #include <ipab.h>
  24. BOOL FInitAddrObj(BOOL fInit); // called at init time
  25. class CAddrObj :
  26. public IOleObject,
  27. public IViewObject,
  28. public IPersist,
  29. public IOleCommandTarget
  30. {
  31. public:
  32. // IUnknown methods
  33. HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject);
  34. ULONG STDMETHODCALLTYPE AddRef(void);
  35. ULONG STDMETHODCALLTYPE Release(void);
  36. // IOleObject methods:
  37. HRESULT STDMETHODCALLTYPE SetClientSite(LPOLECLIENTSITE pClientSite);
  38. HRESULT STDMETHODCALLTYPE GetClientSite(LPOLECLIENTSITE * ppClientSite);
  39. HRESULT STDMETHODCALLTYPE SetHostNames(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj);
  40. HRESULT STDMETHODCALLTYPE Close(DWORD dwSaveOption);
  41. HRESULT STDMETHODCALLTYPE SetMoniker(DWORD dwWhichMoniker, LPMONIKER pmk);
  42. HRESULT STDMETHODCALLTYPE GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, LPMONIKER * ppmk);
  43. HRESULT STDMETHODCALLTYPE InitFromData(LPDATAOBJECT pDataObject, BOOL fCreation, DWORD dwReserved);
  44. HRESULT STDMETHODCALLTYPE GetClipboardData(DWORD dwReserved, LPDATAOBJECT * ppDataObject);
  45. HRESULT STDMETHODCALLTYPE DoVerb(LONG iVerb, LPMSG lpmsg, LPOLECLIENTSITE pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect);
  46. HRESULT STDMETHODCALLTYPE EnumVerbs(LPENUMOLEVERB * ppEnumOleVerb);
  47. HRESULT STDMETHODCALLTYPE Update();
  48. HRESULT STDMETHODCALLTYPE IsUpToDate();
  49. HRESULT STDMETHODCALLTYPE GetUserClassID(CLSID * pClsid);
  50. HRESULT STDMETHODCALLTYPE GetUserType(DWORD dwFormOfType, LPOLESTR * pszUserType);
  51. HRESULT STDMETHODCALLTYPE SetExtent(DWORD dwDrawAspect, LPSIZEL psizel);
  52. HRESULT STDMETHODCALLTYPE GetExtent(DWORD dwDrawAspect, LPSIZEL psizel);
  53. HRESULT STDMETHODCALLTYPE Advise (LPADVISESINK pAdvSink, DWORD * pdwConnection);
  54. HRESULT STDMETHODCALLTYPE Unadvise(DWORD dwConnection);
  55. HRESULT STDMETHODCALLTYPE EnumAdvise(LPENUMSTATDATA * ppenumAdvise);
  56. HRESULT STDMETHODCALLTYPE GetMiscStatus(DWORD dwAspect, DWORD * pdwStatus);
  57. HRESULT STDMETHODCALLTYPE SetColorScheme(LPLOGPALETTE lpLogpal);
  58. // IViewObject methods:
  59. HRESULT STDMETHODCALLTYPE Draw(DWORD dwDrawAspect, LONG lindex, void * pvAspect,
  60. DVTARGETDEVICE * ptd, HDC hicTargetDev, HDC hdcDraw,
  61. LPCRECTL lprcBounds, LPCRECTL lprcWBounds,
  62. BOOL (CALLBACK * pfnContinue)(ULONG_PTR), ULONG_PTR dwContinue);
  63. HRESULT STDMETHODCALLTYPE GetColorSet(DWORD dwDrawAspect, LONG lindex, void *pvAspect,
  64. DVTARGETDEVICE *ptd, HDC hicTargetDev, LPLOGPALETTE *ppColorSet);
  65. HRESULT STDMETHODCALLTYPE Freeze(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DWORD * pdwFreeze);
  66. HRESULT STDMETHODCALLTYPE Unfreeze(DWORD dwFreeze);
  67. HRESULT STDMETHODCALLTYPE SetAdvise(DWORD aspects, DWORD advf, IAdviseSink * pAdvSnk);
  68. HRESULT STDMETHODCALLTYPE GetAdvise(DWORD * pAspects, DWORD * pAdvf, IAdviseSink ** ppAdvSnk);
  69. // IPersit methods:
  70. HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClsID);
  71. // IOleCommandTarget
  72. HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *, ULONG, OLECMD prgCmds[], OLECMDTEXT *);
  73. HRESULT STDMETHODCALLTYPE Exec(const GUID *, DWORD, DWORD, VARIANTARG *, VARIANTARG *);
  74. CAddrObj();
  75. ~CAddrObj();
  76. HRESULT HrSetAdrInfo(LPADRINFO lpAdrInfo);
  77. HRESULT HrGetAdrInfo(LPADRINFO *lplpAdrInfo);
  78. HRESULT OnFontChange();
  79. private:
  80. UINT m_cRef;
  81. BOOL m_fUnderline; // Do we draw the underline?
  82. LPOLECLIENTSITE m_lpoleclientsite;
  83. LPSTORAGE m_pstg; // Associated IStorage
  84. LPADVISESINK m_padvisesink;
  85. LPOLEADVISEHOLDER m_poleadviseholder;
  86. LPADRINFO m_lpAdrInfo;
  87. HWND m_hwndEdit;
  88. HFONT _GetFont();
  89. };
  90. class CAddrObjData:
  91. public IDataObject
  92. {
  93. public:
  94. // IUnknown methods
  95. HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject);
  96. ULONG STDMETHODCALLTYPE AddRef(void);
  97. ULONG STDMETHODCALLTYPE Release(void);
  98. // IDataObject methods:
  99. HRESULT STDMETHODCALLTYPE GetData(FORMATETC * pformatetcIn, STGMEDIUM * pmedium);
  100. HRESULT STDMETHODCALLTYPE GetDataHere(FORMATETC * pformatetc, STGMEDIUM *pmedium);
  101. HRESULT STDMETHODCALLTYPE QueryGetData(FORMATETC * pformatetc );
  102. HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(FORMATETC * pformatetcIn, FORMATETC * pFormatetcOut);
  103. HRESULT STDMETHODCALLTYPE SetData(FORMATETC * pformatetc, STGMEDIUM * pmedium, BOOL fRelease);
  104. HRESULT STDMETHODCALLTYPE EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC ** ppenumFormatEtc );
  105. HRESULT STDMETHODCALLTYPE DAdvise(FORMATETC * pformatetc, DWORD advf, IAdviseSink *pAdvSnk, DWORD * pdwConnection);
  106. HRESULT STDMETHODCALLTYPE DUnadvise(DWORD dwConnection);
  107. HRESULT STDMETHODCALLTYPE EnumDAdvise(IEnumSTATDATA ** ppenumAdvise );
  108. public:
  109. CAddrObjData(LPWABAL lpWabal);
  110. private:
  111. HRESULT HrGetDataHereOrThere(LPFORMATETC pformatetcIn, LPSTGMEDIUM pmedium);
  112. ~CAddrObjData();
  113. private:
  114. ULONG m_cRef;
  115. LPWABAL m_lpWabal;
  116. };
  117. // richedit callback used for addrwells
  118. class CAddrWellCB:
  119. public IRichEditOleCallback
  120. {
  121. public:
  122. // *** IUnknown methods ***
  123. HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, LPVOID FAR *);
  124. ULONG STDMETHODCALLTYPE AddRef();
  125. ULONG STDMETHODCALLTYPE Release();
  126. // *** IRichEditOleCallback methods ***
  127. HRESULT STDMETHODCALLTYPE GetNewStorage (LPSTORAGE FAR *);
  128. HRESULT STDMETHODCALLTYPE GetInPlaceContext(LPOLEINPLACEFRAME FAR *,LPOLEINPLACEUIWINDOW FAR *,LPOLEINPLACEFRAMEINFO);
  129. HRESULT STDMETHODCALLTYPE ShowContainerUI(BOOL);
  130. HRESULT STDMETHODCALLTYPE QueryInsertObject(LPCLSID, LPSTORAGE,LONG);
  131. HRESULT STDMETHODCALLTYPE DeleteObject(LPOLEOBJECT);
  132. HRESULT STDMETHODCALLTYPE QueryAcceptData( LPDATAOBJECT,CLIPFORMAT FAR *, DWORD,BOOL, HGLOBAL);
  133. HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL);
  134. HRESULT STDMETHODCALLTYPE GetClipboardData(CHARRANGE FAR *, DWORD,LPDATAOBJECT FAR *);
  135. HRESULT STDMETHODCALLTYPE GetDragDropEffect(BOOL, DWORD,LPDWORD);
  136. HRESULT STDMETHODCALLTYPE GetContextMenu(WORD, LPOLEOBJECT,CHARRANGE FAR *,HMENU FAR *);
  137. BOOL FInit(HWND hwndEdit);
  138. CAddrWellCB(BOOL fUnderline, BOOL fHasAddrObjs);
  139. ~CAddrWellCB();
  140. BOOL m_fUnderline;
  141. private:
  142. ULONG m_cRef;
  143. HWND m_hwndEdit;
  144. BOOL m_fHasAddrObjs;
  145. };
  146. #ifdef DEBUG
  147. void AssertValidAddrObject(LPUNKNOWN pUnk);
  148. #endif
  149. #endif // _ADDROBJ_H