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

/*
* a d d r o b j . h
*
*
* Purpose:
* implements an Address object. An ole object representation for
* a resolved email address. Wraps a CAddress object
* also implements an IDataObj for drag-drop
*
* Copyright (C) Microsoft Corp. 1993, 1994.
*
* Owner: brettm
*
*/
#ifndef _ADDROBJ_H
#define _ADDROBJ_H
#include <richedit.h>
#ifndef _RICHOLE_H // richole.h has no #ifdef around it...
#define _RICHOLE_H
#include <richole.h>
#endif
#include <addrlist.h>
#include <ipab.h>
BOOL FInitAddrObj(BOOL fInit); // called at init time
class CAddrObj :
public IOleObject,
public IViewObject,
public IPersist,
public IOleCommandTarget
{
public:
// IUnknown methods
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject);
ULONG STDMETHODCALLTYPE AddRef(void);
ULONG STDMETHODCALLTYPE Release(void);
// IOleObject methods:
HRESULT STDMETHODCALLTYPE SetClientSite(LPOLECLIENTSITE pClientSite);
HRESULT STDMETHODCALLTYPE GetClientSite(LPOLECLIENTSITE * ppClientSite);
HRESULT STDMETHODCALLTYPE SetHostNames(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj);
HRESULT STDMETHODCALLTYPE Close(DWORD dwSaveOption);
HRESULT STDMETHODCALLTYPE SetMoniker(DWORD dwWhichMoniker, LPMONIKER pmk);
HRESULT STDMETHODCALLTYPE GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, LPMONIKER * ppmk);
HRESULT STDMETHODCALLTYPE InitFromData(LPDATAOBJECT pDataObject, BOOL fCreation, DWORD dwReserved);
HRESULT STDMETHODCALLTYPE GetClipboardData(DWORD dwReserved, LPDATAOBJECT * ppDataObject);
HRESULT STDMETHODCALLTYPE DoVerb(LONG iVerb, LPMSG lpmsg, LPOLECLIENTSITE pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect);
HRESULT STDMETHODCALLTYPE EnumVerbs(LPENUMOLEVERB * ppEnumOleVerb);
HRESULT STDMETHODCALLTYPE Update();
HRESULT STDMETHODCALLTYPE IsUpToDate();
HRESULT STDMETHODCALLTYPE GetUserClassID(CLSID * pClsid);
HRESULT STDMETHODCALLTYPE GetUserType(DWORD dwFormOfType, LPOLESTR * pszUserType);
HRESULT STDMETHODCALLTYPE SetExtent(DWORD dwDrawAspect, LPSIZEL psizel);
HRESULT STDMETHODCALLTYPE GetExtent(DWORD dwDrawAspect, LPSIZEL psizel);
HRESULT STDMETHODCALLTYPE Advise (LPADVISESINK pAdvSink, DWORD * pdwConnection);
HRESULT STDMETHODCALLTYPE Unadvise(DWORD dwConnection);
HRESULT STDMETHODCALLTYPE EnumAdvise(LPENUMSTATDATA * ppenumAdvise);
HRESULT STDMETHODCALLTYPE GetMiscStatus(DWORD dwAspect, DWORD * pdwStatus);
HRESULT STDMETHODCALLTYPE SetColorScheme(LPLOGPALETTE lpLogpal);
// IViewObject methods:
HRESULT STDMETHODCALLTYPE Draw(DWORD dwDrawAspect, LONG lindex, void * pvAspect,
DVTARGETDEVICE * ptd, HDC hicTargetDev, HDC hdcDraw,
LPCRECTL lprcBounds, LPCRECTL lprcWBounds,
BOOL (CALLBACK * pfnContinue)(ULONG_PTR), ULONG_PTR dwContinue);
HRESULT STDMETHODCALLTYPE GetColorSet(DWORD dwDrawAspect, LONG lindex, void *pvAspect,
DVTARGETDEVICE *ptd, HDC hicTargetDev, LPLOGPALETTE *ppColorSet);
HRESULT STDMETHODCALLTYPE Freeze(DWORD dwDrawAspect, LONG lindex, void * pvAspect, DWORD * pdwFreeze);
HRESULT STDMETHODCALLTYPE Unfreeze(DWORD dwFreeze);
HRESULT STDMETHODCALLTYPE SetAdvise(DWORD aspects, DWORD advf, IAdviseSink * pAdvSnk);
HRESULT STDMETHODCALLTYPE GetAdvise(DWORD * pAspects, DWORD * pAdvf, IAdviseSink ** ppAdvSnk);
// IPersit methods:
HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClsID);
// IOleCommandTarget
HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *, ULONG, OLECMD prgCmds[], OLECMDTEXT *);
HRESULT STDMETHODCALLTYPE Exec(const GUID *, DWORD, DWORD, VARIANTARG *, VARIANTARG *);
CAddrObj();
~CAddrObj();
HRESULT HrSetAdrInfo(LPADRINFO lpAdrInfo);
HRESULT HrGetAdrInfo(LPADRINFO *lplpAdrInfo);
HRESULT OnFontChange();
private:
UINT m_cRef;
BOOL m_fUnderline; // Do we draw the underline?
LPOLECLIENTSITE m_lpoleclientsite;
LPSTORAGE m_pstg; // Associated IStorage
LPADVISESINK m_padvisesink;
LPOLEADVISEHOLDER m_poleadviseholder;
LPADRINFO m_lpAdrInfo;
HWND m_hwndEdit;
HFONT _GetFont();
};
class CAddrObjData:
public IDataObject
{
public:
// IUnknown methods
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject);
ULONG STDMETHODCALLTYPE AddRef(void);
ULONG STDMETHODCALLTYPE Release(void);
// IDataObject methods:
HRESULT STDMETHODCALLTYPE GetData(FORMATETC * pformatetcIn, STGMEDIUM * pmedium);
HRESULT STDMETHODCALLTYPE GetDataHere(FORMATETC * pformatetc, STGMEDIUM *pmedium);
HRESULT STDMETHODCALLTYPE QueryGetData(FORMATETC * pformatetc );
HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(FORMATETC * pformatetcIn, FORMATETC * pFormatetcOut);
HRESULT STDMETHODCALLTYPE SetData(FORMATETC * pformatetc, STGMEDIUM * pmedium, BOOL fRelease);
HRESULT STDMETHODCALLTYPE EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC ** ppenumFormatEtc );
HRESULT STDMETHODCALLTYPE DAdvise(FORMATETC * pformatetc, DWORD advf, IAdviseSink *pAdvSnk, DWORD * pdwConnection);
HRESULT STDMETHODCALLTYPE DUnadvise(DWORD dwConnection);
HRESULT STDMETHODCALLTYPE EnumDAdvise(IEnumSTATDATA ** ppenumAdvise );
public:
CAddrObjData(LPWABAL lpWabal);
private:
HRESULT HrGetDataHereOrThere(LPFORMATETC pformatetcIn, LPSTGMEDIUM pmedium);
~CAddrObjData();
private:
ULONG m_cRef;
LPWABAL m_lpWabal;
};
// richedit callback used for addrwells
class CAddrWellCB:
public IRichEditOleCallback
{
public:
// *** IUnknown methods ***
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, LPVOID FAR *);
ULONG STDMETHODCALLTYPE AddRef();
ULONG STDMETHODCALLTYPE Release();
// *** IRichEditOleCallback methods ***
HRESULT STDMETHODCALLTYPE GetNewStorage (LPSTORAGE FAR *);
HRESULT STDMETHODCALLTYPE GetInPlaceContext(LPOLEINPLACEFRAME FAR *,LPOLEINPLACEUIWINDOW FAR *,LPOLEINPLACEFRAMEINFO);
HRESULT STDMETHODCALLTYPE ShowContainerUI(BOOL);
HRESULT STDMETHODCALLTYPE QueryInsertObject(LPCLSID, LPSTORAGE,LONG);
HRESULT STDMETHODCALLTYPE DeleteObject(LPOLEOBJECT);
HRESULT STDMETHODCALLTYPE QueryAcceptData( LPDATAOBJECT,CLIPFORMAT FAR *, DWORD,BOOL, HGLOBAL);
HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL);
HRESULT STDMETHODCALLTYPE GetClipboardData(CHARRANGE FAR *, DWORD,LPDATAOBJECT FAR *);
HRESULT STDMETHODCALLTYPE GetDragDropEffect(BOOL, DWORD,LPDWORD);
HRESULT STDMETHODCALLTYPE GetContextMenu(WORD, LPOLEOBJECT,CHARRANGE FAR *,HMENU FAR *);
BOOL FInit(HWND hwndEdit);
CAddrWellCB(BOOL fUnderline, BOOL fHasAddrObjs);
~CAddrWellCB();
BOOL m_fUnderline;
private:
ULONG m_cRef;
HWND m_hwndEdit;
BOOL m_fHasAddrObjs;
};
#ifdef DEBUG
void AssertValidAddrObject(LPUNKNOWN pUnk);
#endif
#endif // _ADDROBJ_H