home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1998 May
/
Pcwk5b98.iso
/
Borland
/
Cplus45
/
BC45
/
BOCOLE.PAK
/
BOLESITE.H
< prev
next >
Wrap
C/C++ Source or Header
|
1995-08-29
|
11KB
|
320 lines
//**************************************************************************
//
// BOleSite.h -- Interface of the Bolero half of the OLE2 server object.
// BOleSite objects impersonate the client application
// from the point of view of the Bolero customer who's
// writing a server object (IPart)
//
// Since the server object only has to implement IPart, it's
// convenient to have only one helper object (BOleSite) which
// inherits from all the required Bolero container interfaces
//
// Copyright (c) 1993,94 by Borland International, Inc. All rights reserved
//
//**************************************************************************
#ifndef _BOLESITE_H
#define _BOLESITE_H
#include "BOleComp.h"
#include "BOleFact.h"
#include "BHatch.h"
class _ICLASS BOleService;
class _ICLASS BOleSite : public BOleComponent, public IBSite,
public IBContainer, public IBLinkable,
public IPersistStorage, public IDataObject,
public IOleObject, public IOleInPlaceObject,
public IDropSource, public IEnumFORMATETC,
public IOleInPlaceActiveObject
{
// to have separate IBWindow implementation
class _ICLASS IBApplicationImpl : public IBApplication {
public:
IBUnknownMain *pOuter;
BOleSite *pThis;
IBApplicationImpl::IBApplicationImpl(BOleSite *pT, IBUnknownMain *pO)
: pThis (pT), pOuter (pO) {}
DEFINE_IUNKNOWN(pOuter);
// IBApplication methods
//
virtual HWND _IFUNC GetWindow ();
virtual HRESULT _IFUNC GetWindowRect (LPRECT);
virtual LPCOLESTR _IFUNC GetWindowTitle ();
virtual void _IFUNC AppendWindowTitle (LPCOLESTR);
virtual HRESULT _IFUNC SetStatusText (LPCOLESTR);
virtual HRESULT _IFUNC RequestBorderSpace (LPCRECT);
virtual HRESULT _IFUNC SetBorderSpace (LPCRECT);
virtual HRESULT _IFUNC InsertContainerMenus (HMENU,BOleMenuWidths FAR*);
virtual HRESULT _IFUNC SetFrameMenu (HMENU);
virtual void _IFUNC RestoreUI ();
virtual HRESULT _IFUNC Accelerator (LPMSG);
virtual HRESULT _IFUNC GetAccelerators (HACCEL FAR*, int FAR*);
virtual LPCOLESTR _IFUNC GetAppName ();
virtual BOleHelp _IFUNC HelpMode (BOleHelp);
virtual HRESULT _IFUNC CanLink ();
virtual HRESULT _IFUNC CanEmbed ();
virtual HRESULT _IFUNC IsMDI ();
virtual HRESULT _IFUNC OnModalDialog (BOOL);
virtual void _IFUNC DialogHelpNotify (BOleDialogHelp);
virtual void _IFUNC ShutdownMaybe ();
} iApplication;
friend IBApplicationImpl;
friend class BOleHatchWindow;
public:
IDataAdviseHolder * pDAdvHolder;
IOleAdviseHolder * pAdvHolder;
LPUNKNOWN pDocument;
protected:
BOleService * pService;
PIBPart pPart;
PIBDataProvider pProvider;
IMoniker * pmkDoc; // moniker of server doc
IOleClientSite * pClientSite;
IOleInPlaceSite * pIPSite;
IOleInPlaceFrame * pIPFrame;
IOleInPlaceUIWindow * pIPDoc;
IStorage * pStg;
BOOL fShown : 1;
BOOL fInPlaceActive : 1;
BOOL fInPlaceVisible : 1;
BOOL fInsideOut : 1;
BOOL fUIActive : 1;
BOOL fInHelpMode : 1;
BOOL fIsDirty : 1;
BOOL fHandsOff : 1;
BOOL fInClose : 1;
CLSID cid;
DWORD regLink; // to register full moniker
LPOLESTR pszProgID;
LPOLESTR pszInstName;
OLEINPLACEFRAMEINFO frameInfo;
RECT rcPosRect;
RECT rcClipRect;
HWND hWndParent;
HWND hWndInPlace;
OLEMENUGROUPWIDTHS menuGroupWidths;
HOLEMENU hOleMenu;
HMENU hMenuShared;
BOleHatchWindow *pHatchWnd;
POINT hatchOffset;
ULONG enumFmtIndex;
LPOLESTR pAppName; // Container app's name (not used in current OLE UI spec)
LPOLESTR pWindowTitle; // Container app's document (used in open editing)
LPOLESTR pInPlaceName; // Server object name for SetActiveObject
LPFORMATETC formatList;
UINT formatCount;
BOOL formatLink;
BOOL formatEmbed;
BOleScaleFactor scale;
public:
BOleSite(BOleClassManager * pFact, IBUnknownMain *pOuter, BOleService*);
~BOleSite ();
// IUnknown methods
//
DEFINE_IUNKNOWN(pObjOuter)
virtual HRESULT _IFUNC QueryInterfaceMain(REFIID iid, LPVOID FAR* pif);
// IDataObject methods
//
HRESULT _IFUNC GetData(LPFORMATETC pformatetcIn, LPSTGMEDIUM pmedium);
HRESULT _IFUNC GetDataHere(LPFORMATETC pformatetc, LPSTGMEDIUM pmedium);
HRESULT _IFUNC QueryGetData(LPFORMATETC pformatetc);
HRESULT _IFUNC GetCanonicalFormatEtc(LPFORMATETC pformatetc,
LPFORMATETC pformatetcOut);
HRESULT _IFUNC SetData(LPFORMATETC pformatetc, STGMEDIUM FAR* pmedium,
BOOL fRelease);
HRESULT _IFUNC EnumFormatEtc(DWORD dwDirection,
LPENUMFORMATETC FAR* ppenumFormatEtc);
HRESULT _IFUNC DAdvise(FORMATETC FAR* pFormatetc, DWORD advf,
IAdviseSink* pAdvSink, DWORD FAR* pdwConnection);
HRESULT _IFUNC DUnadvise(DWORD dwConnection);
HRESULT _IFUNC EnumDAdvise(IEnumSTATDATA* FAR* ppenumAdvise);
// IEnumFORMATETC methods
//
HRESULT _IFUNC Next (ULONG celt, FORMATETC FAR * rgelt, ULONG FAR* pceltFetched);
HRESULT _IFUNC Skip (ULONG celt);
HRESULT _IFUNC Reset ();
HRESULT _IFUNC Clone (IEnumFORMATETC FAR* FAR* ppenum);
// IOleObject methods
//
HRESULT _IFUNC SetClientSite(IOleClientSite* pClientSite);
HRESULT _IFUNC GetClientSite(IOleClientSite* FAR* ppClientSite);
HRESULT _IFUNC SetHostNames(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj);
HRESULT _IFUNC Close(DWORD dwSaveOption);
HRESULT _IFUNC SetMoniker(DWORD dwWhichMoniker, IMoniker* pmk);
HRESULT _IFUNC GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker,
IMoniker* FAR* ppmk);
HRESULT _IFUNC InitFromData(IDataObject* pDataObject, BOOL fCreation,
DWORD dwReserved);
HRESULT _IFUNC GetClipboardData(DWORD dwReserved,
IDataObject* FAR* ppDataObject);
HRESULT _IFUNC DoVerb(LONG iVerb, LPMSG lpmsg,
IOleClientSite* pActiveSite, LONG lindex,
HWND hwndParent, LPCRECT lprcPosRect);
HRESULT _IFUNC EnumVerbs(IEnumOLEVERB* FAR* ppenumOleVerb);
HRESULT _IFUNC Update();
HRESULT _IFUNC IsUpToDate();
HRESULT _IFUNC GetUserClassID(CLSID FAR* pClsid);
HRESULT _IFUNC GetUserType(DWORD dwFormOfType, LPOLESTR FAR* pszUserType);
HRESULT _IFUNC SetExtent(DWORD dwDrawAspect, LPSIZEL lpsizel);
HRESULT _IFUNC GetExtent(DWORD dwDrawAspect, LPSIZEL lpsizel);
HRESULT _IFUNC Advise(IAdviseSink* pAdvSink, DWORD FAR* pdwConnection);
HRESULT _IFUNC Unadvise(DWORD dwConnection);
HRESULT _IFUNC EnumAdvise(IEnumSTATDATA* FAR* ppenumAdvise);
HRESULT _IFUNC GetMiscStatus(DWORD dwAspect, DWORD FAR* pdwStatus);
HRESULT _IFUNC SetColorScheme(LPLOGPALETTE lpLogpal);
// IPersistStorage and IPersistFile Common methods
//
HRESULT _IFUNC GetClassID(LPCLSID lpClassID);
HRESULT _IFUNC IsDirty();
// IPersistStorage methods
//
HRESULT _IFUNC InitNew(IStorage* pStg);
HRESULT _IFUNC Load(IStorage* pStg);
HRESULT _IFUNC Save(IStorage* pStgSave,BOOL fSameAsLoad);
HRESULT _IFUNC SaveCompleted(IStorage* pStgSaved);
HRESULT _IFUNC HandsOffStorage();
// IOleWindow methods
//
HRESULT _IFUNC GetWindow (HWND FAR* lphwnd);
HRESULT _IFUNC ContextSensitiveHelp (BOOL fEnterMode);
// IOleInPlaceObject methods
//
HRESULT _IFUNC InPlaceDeactivate ();
HRESULT _IFUNC UIDeactivate ();
HRESULT _IFUNC SetObjectRects (LPCRECT pPos, LPCRECT pClip);
HRESULT _IFUNC ReactivateAndUndo ();
// IOleInPlaceActiveObject methods
//
HRESULT _IFUNC TranslateAccelerator (LPMSG lpmsg);
HRESULT _IFUNC OnFrameWindowActivate (BOOL fActivate);
HRESULT _IFUNC OnDocWindowActivate (BOOL fActivate);
HRESULT _IFUNC ResizeBorder (LPCRECT lprectBorder, LPOLEINPLACEUIWINDOW lpUIWindow, BOOL fFrameWindow);
HRESULT _IFUNC EnableModeless (BOOL fEnable);
// IDropSource methods
//
HRESULT _IFUNC QueryContinueDrag(BOOL fEscapePressed, DWORD grfKeyState);
HRESULT _IFUNC GiveFeedback(DWORD dwEffect);
// IBWindow methods
//
virtual HWND _IFUNC GetWindow ();
virtual HRESULT _IFUNC GetWindowRect (LPRECT);
virtual LPCOLESTR _IFUNC GetWindowTitle ();
virtual void _IFUNC AppendWindowTitle (LPCOLESTR);
virtual HRESULT _IFUNC SetStatusText (LPCOLESTR);
virtual HRESULT _IFUNC RequestBorderSpace (LPCRECT);
virtual HRESULT _IFUNC SetBorderSpace (LPCRECT);
virtual HRESULT _IFUNC InsertContainerMenus (HMENU,BOleMenuWidths FAR*);
virtual HRESULT _IFUNC SetFrameMenu (HMENU);
virtual void _IFUNC RestoreUI ();
virtual HRESULT _IFUNC Accelerator (LPMSG);
virtual HRESULT _IFUNC GetAccelerators (HACCEL FAR*, int FAR*);
// IBContainer methods
//
virtual HRESULT _IFUNC AllowInPlace ();
virtual HRESULT _IFUNC BringToFront ();
virtual HRESULT _IFUNC FindDropDest (LPPOINT, PIBDropDest FAR*);
// ISite methods
//
virtual HRESULT _IFUNC SiteShow(BOOL);
virtual HRESULT _IFUNC DiscardUndo();
virtual HRESULT _IFUNC GetSiteRect(LPRECT,LPRECT);
virtual HRESULT _IFUNC SetSiteRect(LPCRECT);
virtual HRESULT _IFUNC SetSiteExtent(LPCSIZE);
virtual void _IFUNC Invalidate(BOleInvalidate);
virtual void _IFUNC OnSetFocus(BOOL);
virtual HRESULT _IFUNC Init(PIBDataProvider pP, PIBPart pPart, LPCOLESTR psz, BOOL fHatchWnd);
virtual void _IFUNC Disconnect ();
virtual HRESULT _IFUNC GetZoom (BOleScaleFactor *pScale);
virtual HRESULT _IFUNC CalcZoom (LPCRECT rcposRect);
// ILinkable methods
//
virtual HRESULT _IFUNC GetMoniker(IMoniker FAR* FAR* ppMon);
virtual HRESULT _IFUNC OnRename(PIBLinkable pILContainer, LPCOLESTR szName);
protected:
// Implementation methods
//
HRESULT _IFUNC GetMetaFileData (HGLOBAL&);
HGLOBAL _IFUNC GetObjDescData ();
HRESULT _IFUNC GetEmbeddedObjectData (LPFORMATETC, LPSTGMEDIUM);
HRESULT _IFUNC GetLinkSourceData(LPMONIKER, REFCLSID, LPFORMATETC, LPSTGMEDIUM);
void _IFUNC GetFormatFlags(BOOL *fEmbed, BOOL *fLinkable);
void _IFUNC GetFormatList(LPFORMATETC *ppList, UINT *pCount);
void _IFUNC GetFormatCount(UINT *pCount);
void _IFUNC GetFormatInfo(BOOL *fEmbed, BOOL *fLinkable, LPFORMATETC *ppList, UINT *pCount);
LPSTORAGE _IFUNC CreateStorageInMemory (DWORD);
HRESULT _IFUNC Lock (BOOL fLock, BOOL fLastUnlockReleases);
HRESULT _IFUNC ShowWindow ();
HRESULT _IFUNC HideWindow (BOOL fShutdown);
HRESULT _IFUNC AssembleMenus ();
void _IFUNC DisassembleMenus ();
HRESULT _IFUNC DoInPlaceActivate (BOOL fActivateOnly);
HRESULT _IFUNC DoInPlaceShow (BOOL fActivateOnly);
HRESULT _IFUNC DoUIActivate ();
HRESULT _IFUNC DoInPlaceDeactivate ();
HRESULT _IFUNC DoUIDeactivate ();
HRESULT _IFUNC DoInPlaceHide ();
HRESULT _IFUNC DoClose ();
};
#endif