|
|
/*
* d o c . h * * Purpose: * * History * * Copyright (C) Microsoft Corp. 1995, 1996. */
#ifndef _DOC_H
#define _DOC_H
#include "privunk.h"
#include "mimeedit.h"
class CBody; interface IOleObject; interface IOleDocument; interface IOleDocumentView; interface IPersistMime; interface IMimeMessage; //#define OFFICE_BINDER
enum OLE_SERVER_STATE { OS_PASSIVE, OS_LOADED, // handler but no server
OS_RUNNING, // server running, invisible
OS_INPLACE, // server running, inplace-active, no U.
OS_UIACTIVE, // server running, inplace-active, w/ U.
};
class CDoc: public IOleObject, public IOleInPlaceObject, public IOleInPlaceActiveObject, public IOleDocument, public IOleDocumentView, public IOleCommandTarget, public IServiceProvider, public IPersistMime, public IPersistStreamInit, public IPersistFile, public IPersistMoniker, public IMimeEdit, public IQuickActivate, #ifdef OFFICE_BINDER
public IPersistStorage, #endif
public CPrivateUnknown { public: // ---------------------------------------------------------------------------
// IUnknown members
// ---------------------------------------------------------------------------
virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj) { return CPrivateUnknown::QueryInterface(riid, ppvObj); }; virtual STDMETHODIMP_(ULONG) AddRef(void) { return CPrivateUnknown::AddRef();}; virtual STDMETHODIMP_(ULONG) Release(void) { return CPrivateUnknown::Release(); };
// *** IOleDocument ***
virtual HRESULT STDMETHODCALLTYPE CreateView(IOleInPlaceSite *pSite, IStream *pstm, DWORD dwReserved, IOleDocumentView **ppView); virtual HRESULT STDMETHODCALLTYPE GetDocMiscStatus(DWORD *pdwStatus); virtual HRESULT STDMETHODCALLTYPE EnumViews(IEnumOleDocumentViews **ppEnum, IOleDocumentView **ppView);
// *** IOleDocumentView ***
virtual HRESULT STDMETHODCALLTYPE SetInPlaceSite(IOleInPlaceSite *pIPSite); virtual HRESULT STDMETHODCALLTYPE GetInPlaceSite(IOleInPlaceSite **ppIPSite); virtual HRESULT STDMETHODCALLTYPE GetDocument(IUnknown **ppunk); virtual HRESULT STDMETHODCALLTYPE SetRect(LPRECT prcView); virtual HRESULT STDMETHODCALLTYPE GetRect(LPRECT prcView); virtual HRESULT STDMETHODCALLTYPE SetRectComplex(LPRECT prcView, LPRECT prcHScroll, LPRECT prcVScroll, LPRECT prcSizeBox); virtual HRESULT STDMETHODCALLTYPE Show(BOOL fShow); virtual HRESULT STDMETHODCALLTYPE UIActivate(BOOL fUIActivate); virtual HRESULT STDMETHODCALLTYPE Open(); virtual HRESULT STDMETHODCALLTYPE CloseView(DWORD dwReserved); virtual HRESULT STDMETHODCALLTYPE SaveViewState(LPSTREAM pstm); virtual HRESULT STDMETHODCALLTYPE ApplyViewState(LPSTREAM pstm); virtual HRESULT STDMETHODCALLTYPE Clone(IOleInPlaceSite *pIPSiteNew, IOleDocumentView **ppViewNew);
// *** IOleObject ***
virtual HRESULT STDMETHODCALLTYPE SetClientSite(IOleClientSite *pClientSite); virtual HRESULT STDMETHODCALLTYPE GetClientSite(IOleClientSite **ppClientSite); virtual HRESULT STDMETHODCALLTYPE SetHostNames(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj); virtual HRESULT STDMETHODCALLTYPE Close(DWORD dwSaveOption); virtual HRESULT STDMETHODCALLTYPE SetMoniker(DWORD dwWhichMoniker, IMoniker *pmk); virtual HRESULT STDMETHODCALLTYPE GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk); virtual HRESULT STDMETHODCALLTYPE InitFromData(IDataObject *pDataObject, BOOL fCreation, DWORD dwReserved); virtual HRESULT STDMETHODCALLTYPE GetClipboardData(DWORD dwReserved, IDataObject **ppDataObject); virtual HRESULT STDMETHODCALLTYPE DoVerb(LONG iVerb, LPMSG lpmsg, IOleClientSite *pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect); virtual HRESULT STDMETHODCALLTYPE EnumVerbs(IEnumOLEVERB **ppEnumOleVerb); virtual HRESULT STDMETHODCALLTYPE Update(); virtual HRESULT STDMETHODCALLTYPE IsUpToDate(); virtual HRESULT STDMETHODCALLTYPE GetUserClassID(CLSID *pClsid); virtual HRESULT STDMETHODCALLTYPE GetUserType(DWORD dwFormOfType, LPOLESTR *pszUserType); virtual HRESULT STDMETHODCALLTYPE SetExtent(DWORD dwDrawAspect, SIZEL *psizel); virtual HRESULT STDMETHODCALLTYPE GetExtent(DWORD dwDrawAspect, SIZEL *psizel); virtual HRESULT STDMETHODCALLTYPE Advise(IAdviseSink *pAdvSink, DWORD *pdwConnection); virtual HRESULT STDMETHODCALLTYPE Unadvise(DWORD dwConnection); virtual HRESULT STDMETHODCALLTYPE EnumAdvise(IEnumSTATDATA **ppenumAdvise); virtual HRESULT STDMETHODCALLTYPE GetMiscStatus(DWORD dwAspect, DWORD *pdwStatus); virtual HRESULT STDMETHODCALLTYPE SetColorScheme(LOGPALETTE *pLogpal);
// *** IOleInPlaceObject ***
virtual HRESULT STDMETHODCALLTYPE InPlaceDeactivate(); virtual HRESULT STDMETHODCALLTYPE UIDeactivate(); virtual HRESULT STDMETHODCALLTYPE SetObjectRects(LPCRECT lprcPosRect, LPCRECT lprcClipRect); virtual HRESULT STDMETHODCALLTYPE ReactivateAndUndo();
// *** IOleWindow ***
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *phwnd); virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
// *** IOleInPlaceActiveObject ***
virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(LPMSG lpmsg); virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(BOOL fActivate); virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate(BOOL fActivate); virtual HRESULT STDMETHODCALLTYPE ResizeBorder(LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fFrameWindow); virtual HRESULT STDMETHODCALLTYPE EnableModeless(BOOL fEnable);
// *** IOleCommandTarget ***
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText); virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut);
// *** IServiceProvider ***
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, LPVOID *ppvObject);
// *** IPersist ***
virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID);
// *** IPersistMime ***
virtual HRESULT STDMETHODCALLTYPE Load(IMimeMessage *pMsg); virtual HRESULT STDMETHODCALLTYPE Save(IMimeMessage *pMsg, DWORD dwFlags);
// *** IPersistStreamInit ***
virtual HRESULT STDMETHODCALLTYPE IsDirty(); virtual HRESULT STDMETHODCALLTYPE Load(LPSTREAM pstm); virtual HRESULT STDMETHODCALLTYPE Save(LPSTREAM pstm, BOOL fClearDirty); virtual HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER * pCbSize); virtual HRESULT STDMETHODCALLTYPE InitNew();
// IPersistMoniker Members
virtual HRESULT STDMETHODCALLTYPE Load(BOOL fFullyAvailable, IMoniker *pMoniker, IBindCtx *pBindCtx, DWORD grfMode); virtual HRESULT STDMETHODCALLTYPE GetCurMoniker(IMoniker **ppMoniker); virtual HRESULT STDMETHODCALLTYPE Save(IMoniker *pMoniker, IBindCtx *pBindCtx, BOOL fRemember); virtual HRESULT STDMETHODCALLTYPE SaveCompleted(IMoniker *pMoniker, IBindCtx *pBindCtx);
#ifdef OFFICE_BINDER
// *** IPersistStorage ***
virtual HRESULT STDMETHODCALLTYPE InitNew(IStorage *pStg); virtual HRESULT STDMETHODCALLTYPE Load(IStorage *pStg); virtual HRESULT STDMETHODCALLTYPE Save(IStorage *pStgSave, BOOL fSameAsLoad); virtual HRESULT STDMETHODCALLTYPE SaveCompleted(IStorage *pStgNew); virtual HRESULT STDMETHODCALLTYPE HandsOffStorage(); #endif
// *** IDispatch ***
virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo); virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo **pptinfo); virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgdispid); virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdispparams, VARIANT *pvarResult, EXCEPINFO *pexcepinfo, UINT *puArgErr);
// *** IMimeEdit **
virtual HRESULT STDMETHODCALLTYPE put_src(BSTR bstr); virtual HRESULT STDMETHODCALLTYPE get_src(BSTR *pbstr); virtual HRESULT STDMETHODCALLTYPE put_header(LONG lStyle); virtual HRESULT STDMETHODCALLTYPE get_header(LONG *plStyle); virtual HRESULT STDMETHODCALLTYPE put_editMode(VARIANT_BOOL b); virtual HRESULT STDMETHODCALLTYPE get_editMode(VARIANT_BOOL *pbool); virtual HRESULT STDMETHODCALLTYPE get_messageSource(BSTR *pbstr);
// OE5_BETA2 needs to be defined in public headers
virtual HRESULT STDMETHODCALLTYPE get_text(BSTR *pbstr); virtual HRESULT STDMETHODCALLTYPE get_html(BSTR *pbstr); virtual HRESULT STDMETHODCALLTYPE clear(); virtual HRESULT STDMETHODCALLTYPE get_doc(IDispatch **ppDoc);
// OE5_BETA2 needs to be defined in public headers
// *** IQuickActivate ***
virtual HRESULT STDMETHODCALLTYPE QuickActivate(QACONTAINER *pQaContainer, QACONTROL *pQaControl); virtual HRESULT STDMETHODCALLTYPE SetContentExtent(LPSIZEL pSizel); virtual HRESULT STDMETHODCALLTYPE GetContentExtent(LPSIZEL pSizel);
// *** IPersistFile ***
virtual HRESULT STDMETHODCALLTYPE Load(LPCOLESTR pszFileName, DWORD dwMode); virtual HRESULT STDMETHODCALLTYPE Save(LPCOLESTR pszFileName, BOOL fRemember); virtual HRESULT STDMETHODCALLTYPE SaveCompleted(LPCOLESTR pszFileName); virtual HRESULT STDMETHODCALLTYPE GetCurFile(LPOLESTR * ppszFileName);
CDoc(IUnknown *pUnkOuter=NULL); virtual ~CDoc();
private: ULONG m_ulState; HWND m_hwndParent; LPSTR m_lpszAppName; IOleClientSite *m_pClientSite; IOleInPlaceSite *m_pIPSite; IOleInPlaceFrame *m_pInPlaceFrame; IOleInPlaceUIWindow *m_pInPlaceUIWindow; CBody *m_pBodyObj; LPTYPEINFO m_pTypeInfo;
virtual HRESULT PrivateQueryInterface(REFIID riid, LPVOID * ppvObj);
HRESULT ActivateView(); HRESULT ActivateInPlace(); HRESULT DeactivateInPlace(); HRESULT ActivateUI(); HRESULT DeactivateUI();
HRESULT DoShow(IOleClientSite *pActiveSite, HWND hwndParent, LPCRECT lprcPosRect);
HRESULT AttachWin(HWND hwndParent, LPRECT lprcPos);
BOOL OnCreate(HWND hwnd); BOOL OnNCDestroy();
HRESULT GetHostName(LPSTR szTitle, ULONG cch); HRESULT EnsureTypeLibrary();
};
#endif
|