home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / BOCOLE.PAK / BOLEPART.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  8.2 KB  |  228 lines

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