home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / BOCOLE.PAK / BOLEPART.H < prev    next >
C/C++ Source or Header  |  1995-08-29  |  8KB  |  228 lines

  1. //
  2. //**************************************************************************
  3. //
  4. // BOlePart.h -- Declares the Bolero half of the site object. BOlePart
  5. //               looks to the user like a server object
  6. //
  7. // Copyright (c) 1993,94 by Borland International, Inc. All rights reserved
  8. //
  9. //**************************************************************************
  10.  
  11. #ifndef _BOLEPART_H
  12. #define _BOLEPART_H 1
  13.  
  14. #include "BOleComp.h"
  15.  
  16. #if !defined(__SHELLAPI_H) && !defined(__WIN32__)
  17.   #include <shellapi.h>
  18. #endif
  19.  
  20. extern "C"{
  21. #include "ole2ui.h"
  22. }
  23.  
  24. class _ICLASS BOleDocument;
  25.  
  26. class _ICLASS BOlePart : public BOleComponent,   public IBPart2,
  27.                          public IOleClientSite,  public IAdviseSink,
  28.                          public IOleInPlaceSite, public IBLinkInfo,
  29.                          public IBLinkable,      public IDropSource
  30. {
  31. protected:
  32.  
  33.   IBSite            * pSite;
  34.   IBContainer       * pContainer;
  35.   IBLinkable        * pILinkCont;
  36.   BOleDocument      * pDoc;
  37.   IViewObject       * pViewObject;
  38.   IEnumFORMATETC    * pEnumFE;
  39.   IOleInPlaceObject * pInPlaceObject;
  40.   IEnumOLEVERB      * pVerbEnumerator;
  41.   IOleLink          * pLinkObject;
  42.   IStorage          * pStgFromInit;
  43.  
  44.   BOOL IsOpen          : 1;
  45.   BOOL IsOpenInPlace   : 1;
  46.   BOOL IsOpenInsideOut : 1;
  47.   BOOL HasMoniker      : 1;
  48.   BOOL IsLink          : 1;
  49.   BOOL MonikerAssigned : 1;
  50.   BOOL fLinkSrcAvail   : 1;
  51.  
  52.   LPOLESTR               pShortName;
  53.   LPOLESTR               pLongName;
  54.   LPOLESTR               pAppName;
  55.   WORD            verbIndex;
  56.   OLEVERB         oleVerb;
  57.   DWORD           dwDrawAspect, dwExtAspect;
  58.   HGLOBAL         mfpIcon;
  59.   BOlePart        * pNextPart, *pPrevPart;
  60.   LPOLESTR               pszInstName;
  61.   BOleScaleFactor scaleSite;
  62.   SIZEL           CachedExtent;
  63.  
  64. public:
  65.  
  66.   IOleObject     * pOleObject;
  67.   IDataObject    * pDataObject;
  68.   LPUNKNOWN        pDocument;
  69. private:
  70.   void AddToList ();
  71.   void RemoveFromList ();
  72.  
  73. public:
  74.   BOlePart (BOleClassManager *pF, IBUnknownMain * pO, BOleDocument * pOD);
  75.   ~BOlePart ();
  76.  
  77.   virtual HRESULT    _IFUNC GetParentIPS(LPOLEINPLACESITE *pIPSite);
  78.   virtual IMoniker * _IFUNC GetObjectMoniker (DWORD dwAssign);
  79.   virtual BOOL       _IFUNC GetLinkAvailability() {return fLinkSrcAvail;}
  80.   virtual BOlePart * _IFUNC GetNextLink (BOOL);
  81.   virtual BOOL       _IFUNC SourceGet(LPOLESTR FAR *,LPOLESTR FAR *,
  82.                                        LPOLESTR FAR *,DWORD FAR *);
  83.   virtual BOOL _IFUNC CacheIconicAspect (HGLOBAL);
  84.   virtual BOOL _IFUNC InitAdvises(LPOLEOBJECT, DWORD, LPOLESTR, LPOLESTR,
  85.                                    LPADVISESINK, BOOL);
  86.   HRESULT CreateFromBOleInitInfo(BOleInitInfo *pBI, BOOL &fShowAfterCreate);
  87.   void      UpdateSiteScaleFactor();
  88.   void    DeleteTypeNames();
  89.  
  90.   virtual HRESULT   _IFUNC CopyFromOriginal (LPFORMATETC, LPDATAOBJECT FAR*);
  91.   virtual HRESULT _IFUNC AddCachedData (IDataObject *pTarget);
  92.   virtual HRESULT _IFUNC AddLinkSourceData (IDataObject *pTarget);
  93.   virtual HRESULT _IFUNC AddSiteData (IDataObject *pTarget);
  94.  
  95.   virtual HRESULT   _IFUNC ConvertUI (PIBApplication, BOOL, BOleConvertInfo FAR*);
  96.   virtual HRESULT   _IFUNC ConvertGuts (BOOL, BOleConvertInfo FAR*);
  97.   virtual HRESULT   _IFUNC ConvertHelper (LPCLSID, LPOLESTR FAR *, WORD FAR*);
  98.  
  99.   virtual BOOL      _IFUNC IsInPlace () {return IsOpenInPlace;}
  100.   virtual void      _IFUNC ResetObjectRects ();
  101.   virtual BOlePart* _IFUNC GetNextPart () {return pNextPart;}
  102.  
  103.   HRESULT _IFUNC SwitchDisplayAspect(
  104.         LPOLEOBJECT   lpOleObj,
  105.         LPDWORD       lpdwCurAspect,
  106.         DWORD         dwNewAspect,
  107.         HGLOBAL       hMetaPict,
  108.         BOOL          fDeleteOldAspect,
  109.         BOOL          fSetupViewAdvise,
  110.         LPADVISESINK  lpAdviseSink,
  111.         BOOL FAR*     lpfMustUpdate,
  112.         BOOL                      fRunIfNecessary);
  113.  
  114.         void _IFUNC HandleLinkError();
  115.  
  116. public:
  117.  
  118. // IPart methods
  119.   virtual HRESULT _IFUNC Init(PIBSite, BOleInitInfo FAR*);
  120.   virtual HRESULT _IFUNC Save (PIStorage, BOOL, BOOL);
  121.  
  122. // Information
  123.   virtual HRESULT _IFUNC CanOpenInPlace ();
  124.   virtual HRESULT _IFUNC GetPalette (LPLOGPALETTE FAR*);
  125.   virtual HRESULT _IFUNC SetHost (IBContainer FAR *pObjContainer);
  126.   virtual LPOLESTR _IFUNC GetName (BOlePartName);
  127.  
  128. // Server part state changes
  129.   virtual HRESULT _IFUNC Open (BOOL );
  130.   virtual HRESULT _IFUNC Show (BOOL );
  131.   virtual HRESULT _IFUNC Close ();
  132.   virtual HRESULT _IFUNC Activate (BOOL fActivate);
  133.   virtual HWND    _IFUNC OpenInPlace (HWND);
  134.  
  135. // Part size and update methods
  136.   virtual HRESULT _IFUNC GetPartSize (LPSIZE);
  137.   virtual HRESULT _IFUNC SetPartSize (LPSIZE);
  138.   virtual HRESULT _IFUNC SetPartPos (LPRECT);
  139.   virtual HRESULT _IFUNC Draw (HDC, LPCRECTL lpExtent, LPCRECTL lpClip, BOleAspect, BOleDraw);
  140.  
  141. // Tool handling
  142.   virtual HRESULT _IFUNC InsertMenus (HMENU, BOleMenuWidths*);
  143.   virtual void    _IFUNC FrameResized (const RECT *, BOOL);
  144.   virtual HRESULT _IFUNC ShowTools (BOOL);
  145.  
  146.   virtual HRESULT _IFUNC EnumVerbs (BOleVerb*);
  147.   virtual HRESULT _IFUNC DragFeedback(POINT*,BOOL);
  148.   virtual HRESULT _IFUNC DoVerb (UINT);
  149.  
  150. //IBLinkInfo methods
  151.   virtual HRESULT _IFUNC SourceBreak();
  152.   virtual HRESULT _IFUNC SourceGet(LPOLESTR, UINT);
  153.   virtual HRESULT _IFUNC SourceSet(LPOLESTR);
  154.   virtual HRESULT _IFUNC SourceOpen();
  155.   virtual HRESULT _IFUNC UpdateGet(BOleLinkUpdate*);
  156.   virtual HRESULT _IFUNC UpdateSet(BOleLinkUpdate);
  157.   virtual HRESULT _IFUNC UpdateNow();
  158.  
  159. //Clipboard methods inherited from IBDataProvider
  160.   virtual UINT    _IFUNC CountFormats ();
  161.   virtual HRESULT _IFUNC GetFormat (UINT, BOleFormat*);
  162.   virtual HANDLE  _IFUNC GetFormatData (BOleFormat*);
  163.   virtual HRESULT _IFUNC SetFormatData(BOleFormat FAR* fmt, HANDLE data, BOOL release);
  164.  
  165.   virtual HRESULT _IFUNC DoQueryInterface(REFIID iid, void FAR* FAR* pif);
  166.  
  167.   // IUnknown Methods
  168.   //
  169.   DEFINE_IUNKNOWN(pObjOuter);
  170.  
  171.   virtual HRESULT _IFUNC QueryInterfaceMain(REFIID iid, LPVOID FAR* pif);
  172.  
  173. protected:
  174.   // IOleClientSite Methods
  175.   //
  176.   HRESULT _IFUNC SaveObject();
  177.   HRESULT _IFUNC GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker,
  178.                             IMoniker* FAR* ppmk);
  179.   HRESULT _IFUNC GetContainer(IOleContainer* FAR* ppContainer);
  180.   HRESULT _IFUNC ShowObject();
  181.   HRESULT _IFUNC OnShowWindow(BOOL fShow);
  182.   HRESULT _IFUNC RequestNewObjectLayout();
  183.  
  184.   // IAdviseSink Methods
  185.   //
  186.   void _IFUNC OnDataChange(FORMATETC FAR* pFormatetc,
  187.                            STGMEDIUM FAR* pStgmed);
  188.   void _IFUNC OnViewChange(DWORD aspects, LONG lindex);
  189.   void _IFUNC OnRename(IMoniker* pmk);
  190.   void _IFUNC OnSave();
  191.   void _IFUNC OnClose();
  192.  
  193.   // IOleWindow methods, base of IOleInPlaceUIWindow and IOleInPlaceSite
  194.   //
  195.   HRESULT _IFUNC GetWindow(HWND FAR* lphwnd);
  196.   HRESULT _IFUNC ContextSensitiveHelp(BOOL fEnterMode);
  197.  
  198.   // IOleInPlaceSite methods
  199.   //
  200.   HRESULT _IFUNC CanInPlaceActivate();
  201.   HRESULT _IFUNC OnInPlaceActivate();
  202.   HRESULT _IFUNC OnUIActivate();
  203.   HRESULT _IFUNC GetWindowContext(IOleInPlaceFrame* FAR* lplpFrame,
  204.                                   IOleInPlaceUIWindow* FAR* lplpDoc,
  205.                                   LPRECT lprcPosRect,
  206.                                   LPRECT lprcClipRect,
  207.                                   LPOLEINPLACEFRAMEINFO lpFrameInfo);
  208.   HRESULT _IFUNC Scroll(SIZE scrollExtent);
  209.   HRESULT _IFUNC OnUIDeactivate(BOOL fUndoable);
  210.   HRESULT _IFUNC OnInPlaceDeactivate();
  211.   HRESULT _IFUNC DiscardUndoState();
  212.   HRESULT _IFUNC DeactivateAndUndo();
  213.   HRESULT _IFUNC OnPosRectChange(LPCRECT lprcPosRect);
  214.  
  215.   // IBLinkable methods
  216.   //
  217.   virtual HRESULT _IFUNC GetMoniker(IMoniker FAR* FAR* ppMon);
  218.   virtual HRESULT _IFUNC OnRename(PIBLinkable pContainer, LPCOLESTR szName);
  219.  
  220.   // IDropSource methods
  221.   //
  222.   HRESULT _IFUNC QueryContinueDrag(BOOL fEscapePressed, DWORD grfKeyState);
  223.   HRESULT _IFUNC GiveFeedback(DWORD dwEffect);
  224. };
  225.  
  226. #endif
  227.  
  228.