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

  1. //----------------------------------------------------------------------------
  2. // ObjectComponents
  3. // Copyright (c) 1994, 1996 by Borland International, All Rights Reserved
  4. //
  5. // $Revision:   2.4  $
  6. //
  7. //  Interface of the Bolero half of the OLE2 server object. BOleSite objects 
  8. //  impersonate the client application from the point of view of the Bolero 
  9. //  customer who's writing a server object (IPart)
  10. //
  11. //  NOTE: Since the server object only has to implement IPart, it's
  12. //        convenient to have only one helper object (BOleSite) which
  13. //        inherits from all the required Bolero container interfaces
  14. //----------------------------------------------------------------------------
  15. #ifndef _BOLESITE_H
  16. #define _BOLESITE_H 
  17.  
  18. #ifndef _BOLECOMP_H
  19. #include "BOleComp.h"
  20. #endif
  21.  
  22. #ifndef _BOLEFACT_H
  23. #include "BOleFact.h"
  24. #endif
  25.  
  26. #ifndef _BHATCH_H
  27. #include "BHatch.h"
  28. #endif
  29.  
  30. class _ICLASS BOleService;
  31.  
  32. class _ICLASS BOleSite :     public BOleComponent, public IBSite,
  33.                            public IBContainer,   public IBLinkable,
  34.  
  35.                            public IPersistStorage, public IDataObject,
  36.                                     public IOleObject,      public IOleInPlaceObject,     
  37.                            public IDropSource,     public IEnumFORMATETC,
  38.                            public IOleInPlaceActiveObject,
  39.                            public IBDataState
  40. {
  41.     // to have separate IBWindow implementation
  42.     class _ICLASS IBApplicationImpl : public IBApplication {
  43.     public:
  44.         IBUnknownMain *pOuter;
  45.         BOleSite *pThis;
  46.  
  47.         IBApplicationImpl::IBApplicationImpl(BOleSite *pT, IBUnknownMain *pO)
  48.         : pThis (pT), pOuter (pO) {}
  49.         DEFINE_IUNKNOWN(pOuter);
  50.         
  51.         // IBApplication methods
  52.         //
  53.         virtual HWND     _IFUNC GetWindow ();
  54.         virtual HRESULT  _IFUNC GetWindowRect (LPRECT);
  55.         virtual LPCOLESTR _IFUNC GetWindowTitle ();
  56.         virtual void     _IFUNC AppendWindowTitle (LPCOLESTR);
  57.         virtual HRESULT  _IFUNC SetStatusText (LPCOLESTR);
  58.  
  59.         virtual HRESULT  _IFUNC RequestBorderSpace (LPCRECT);
  60.         virtual HRESULT  _IFUNC SetBorderSpace (LPCRECT);
  61.  
  62.         virtual HRESULT  _IFUNC InsertContainerMenus (HMENU,BOleMenuWidths FAR*);
  63.         virtual HRESULT  _IFUNC SetFrameMenu (HMENU);
  64.         virtual void     _IFUNC RestoreUI ();
  65.         virtual HRESULT  _IFUNC Accelerator (LPMSG);
  66.         virtual HRESULT  _IFUNC GetAccelerators (HACCEL FAR*, int FAR*);
  67.  
  68.         virtual LPCOLESTR _IFUNC GetAppName ();
  69.         virtual BOleHelp _IFUNC HelpMode (BOleHelp);
  70.         virtual HRESULT  _IFUNC CanLink ();
  71.         virtual HRESULT  _IFUNC CanEmbed ();
  72.         virtual HRESULT  _IFUNC IsMDI ();
  73.         virtual HRESULT  _IFUNC OnModalDialog (BOOL);
  74.         virtual void     _IFUNC DialogHelpNotify (BOleDialogHelp);
  75.         virtual void     _IFUNC ShutdownMaybe ();
  76.     } iApplication;
  77.     
  78.     friend IBApplicationImpl;
  79.     friend class BOleHatchWindow;
  80.     
  81.     
  82. public:
  83.     IDataAdviseHolder * pDAdvHolder;
  84.     IOleAdviseHolder  * pAdvHolder;
  85.     LPUNKNOWN            pDocument;
  86.  
  87. protected:
  88.     BOleService         * pService;
  89.     PIBPart               pPart;
  90.     PIBDataProvider       pProvider;
  91.     IMoniker            * pmkDoc;    // moniker of server doc
  92.     IOleClientSite      * pClientSite;
  93.     IOleInPlaceSite     * pIPSite;
  94.     IOleInPlaceFrame    * pIPFrame;
  95.     IOleInPlaceUIWindow * pIPDoc;
  96.     IStorage            * pStg;
  97.     
  98.     BOOL fShown          : 1;
  99.     BOOL fInPlaceActive  : 1;
  100.     BOOL fInPlaceVisible : 1;
  101.     BOOL fInsideOut      : 1;
  102.     BOOL fUIActive       : 1;
  103.     BOOL fInHelpMode     : 1;
  104.     BOOL fIsDirty        : 1;
  105.     BOOL fHandsOff       : 1;
  106.     BOOL fInClose        : 1;
  107.  
  108.     CLSID cid;
  109.     DWORD regLink;               // to register full moniker
  110.     
  111.     LPOLESTR pszProgID;
  112.     LPOLESTR pszInstName;
  113.     OLEINPLACEFRAMEINFO frameInfo;
  114.     RECT rcPosRect;
  115.     RECT rcClipRect;
  116.     
  117.     HWND hWndParent;
  118.     HWND hWndInPlace;
  119.  
  120.     OLEMENUGROUPWIDTHS  menuGroupWidths;
  121.     HOLEMENU            hOleMenu;
  122.     HMENU               hMenuShared;
  123.  
  124.     BOleHatchWindow *pHatchWnd;
  125.     POINT hatchOffset;
  126.     ULONG enumFmtIndex;
  127.  
  128.     LPOLESTR pAppName;        // Container app's name (not used in current OLE UI spec)
  129.     LPOLESTR pWindowTitle;    // Container app's document (used in open editing)
  130.     LPOLESTR pInPlaceName;    // Server object name for SetActiveObject
  131.  
  132.     LPFORMATETC formatList;
  133.     UINT             formatCount;
  134.     BOOL formatLink;
  135.     BOOL formatEmbed;
  136.     
  137.     BOleScaleFactor scale;
  138.  
  139. public:
  140.  
  141.     BOleSite(BOleClassManager * pFact, IBUnknownMain *pOuter, BOleService*);
  142.     ~BOleSite ();
  143.  
  144.     // IUnknown methods
  145.     //
  146.     DEFINE_IUNKNOWN(pObjOuter)
  147.  
  148.     virtual HRESULT _IFUNC QueryInterfaceMain(REFIID iid, LPVOID FAR* pif);
  149.  
  150.     // IDataObject methods
  151.     //
  152.     HRESULT _IFUNC GetData(LPFORMATETC pformatetcIn, LPSTGMEDIUM pmedium);
  153.     HRESULT _IFUNC GetDataHere(LPFORMATETC pformatetc, LPSTGMEDIUM pmedium);
  154.     HRESULT _IFUNC QueryGetData(LPFORMATETC pformatetc);
  155.     HRESULT _IFUNC GetCanonicalFormatEtc(LPFORMATETC pformatetc,
  156.                                          LPFORMATETC pformatetcOut);
  157.     HRESULT _IFUNC SetData(LPFORMATETC pformatetc, STGMEDIUM FAR* pmedium,
  158.                            BOOL fRelease);
  159.     HRESULT _IFUNC EnumFormatEtc(DWORD dwDirection,
  160.                                  LPENUMFORMATETC FAR* ppenumFormatEtc);
  161.     HRESULT _IFUNC DAdvise(FORMATETC FAR* pFormatetc, DWORD advf, 
  162.                            IAdviseSink* pAdvSink, DWORD FAR* pdwConnection);
  163.     HRESULT _IFUNC DUnadvise(DWORD dwConnection);
  164.     HRESULT _IFUNC EnumDAdvise(IEnumSTATDATA* FAR* ppenumAdvise);
  165.  
  166.     // IEnumFORMATETC methods
  167.     //
  168.     HRESULT _IFUNC Next (ULONG celt, FORMATETC FAR * rgelt, ULONG FAR* pceltFetched);
  169.     HRESULT _IFUNC Skip (ULONG celt);
  170.     HRESULT _IFUNC Reset ();
  171.     HRESULT _IFUNC Clone (IEnumFORMATETC FAR* FAR* ppenum);
  172.  
  173.     // IOleObject methods
  174.     //
  175.     HRESULT _IFUNC SetClientSite(IOleClientSite* pClientSite);
  176.     HRESULT _IFUNC GetClientSite(IOleClientSite* FAR* ppClientSite);
  177.     HRESULT _IFUNC SetHostNames(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj);
  178.     HRESULT _IFUNC Close(DWORD dwSaveOption);
  179.     HRESULT _IFUNC SetMoniker(DWORD dwWhichMoniker, IMoniker* pmk);
  180.     HRESULT _IFUNC GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, 
  181.                               IMoniker* FAR* ppmk);
  182.     HRESULT _IFUNC InitFromData(IDataObject* pDataObject, BOOL fCreation,
  183.                               DWORD dwReserved);
  184.     HRESULT _IFUNC GetClipboardData(DWORD dwReserved, 
  185.                                     IDataObject* FAR* ppDataObject);
  186.     HRESULT _IFUNC DoVerb(LONG iVerb, LPMSG lpmsg,
  187.                            IOleClientSite* pActiveSite, LONG lindex,
  188.                            HWND hwndParent, LPCRECT lprcPosRect);
  189.     HRESULT _IFUNC EnumVerbs(IEnumOLEVERB* FAR* ppenumOleVerb);
  190.     HRESULT _IFUNC Update();
  191.     HRESULT _IFUNC IsUpToDate();
  192.     HRESULT _IFUNC GetUserClassID(CLSID FAR* pClsid);
  193.     HRESULT _IFUNC GetUserType(DWORD dwFormOfType, LPOLESTR FAR* pszUserType);
  194.     HRESULT _IFUNC SetExtent(DWORD dwDrawAspect, LPSIZEL lpsizel);
  195.     HRESULT _IFUNC GetExtent(DWORD dwDrawAspect, LPSIZEL lpsizel);
  196.     HRESULT _IFUNC Advise(IAdviseSink* pAdvSink, DWORD FAR* pdwConnection);
  197.     HRESULT _IFUNC Unadvise(DWORD dwConnection);
  198.     HRESULT _IFUNC EnumAdvise(IEnumSTATDATA* FAR* ppenumAdvise);
  199.     HRESULT _IFUNC GetMiscStatus(DWORD dwAspect, DWORD FAR* pdwStatus);
  200.     HRESULT _IFUNC SetColorScheme(LPLOGPALETTE lpLogpal);
  201.  
  202.     // IPersistStorage and IPersistFile Common methods
  203.     //
  204.     HRESULT _IFUNC GetClassID(LPCLSID lpClassID);
  205.     HRESULT _IFUNC IsDirty();
  206.     
  207.     // IPersistStorage methods
  208.     //
  209.     HRESULT _IFUNC InitNew(IStorage* pStg);
  210.     HRESULT _IFUNC Load(IStorage* pStg);
  211.     HRESULT _IFUNC Save(IStorage* pStgSave,BOOL fSameAsLoad);
  212.     HRESULT _IFUNC SaveCompleted(IStorage* pStgSaved);
  213.     HRESULT _IFUNC HandsOffStorage(); 
  214.     
  215.     // IOleWindow methods 
  216.     //
  217.     HRESULT _IFUNC GetWindow (HWND FAR* lphwnd);
  218.     HRESULT _IFUNC ContextSensitiveHelp (BOOL fEnterMode);
  219.     
  220.     // IOleInPlaceObject methods 
  221.     //
  222.     HRESULT _IFUNC InPlaceDeactivate ();   
  223.     HRESULT _IFUNC UIDeactivate ();
  224.     HRESULT _IFUNC SetObjectRects (LPCRECT pPos,    LPCRECT pClip);
  225.     HRESULT _IFUNC ReactivateAndUndo ();   
  226.     
  227.     // IOleInPlaceActiveObject methods 
  228.     //
  229.     HRESULT _IFUNC TranslateAccelerator (LPMSG lpmsg);   
  230.     HRESULT _IFUNC OnFrameWindowActivate (BOOL fActivate);           
  231.     HRESULT _IFUNC OnDocWindowActivate (BOOL fActivate);
  232.     HRESULT _IFUNC ResizeBorder (LPCRECT lprectBorder, LPOLEINPLACEUIWINDOW lpUIWindow, BOOL fFrameWindow);          
  233.     HRESULT _IFUNC EnableModeless (BOOL fEnable);
  234.     
  235.     // IDropSource methods
  236.     //
  237.     HRESULT _IFUNC QueryContinueDrag(BOOL fEscapePressed, DWORD grfKeyState);
  238.     HRESULT _IFUNC GiveFeedback(DWORD dwEffect);
  239.  
  240.     // IBWindow methods
  241.     //
  242.     virtual HWND      _IFUNC GetWindow ();
  243.     virtual HRESULT   _IFUNC GetWindowRect (LPRECT);
  244.     virtual LPCOLESTR _IFUNC GetWindowTitle ();
  245.     virtual void      _IFUNC AppendWindowTitle (LPCOLESTR);
  246.     virtual HRESULT   _IFUNC SetStatusText (LPCOLESTR);
  247.      
  248.     virtual HRESULT   _IFUNC RequestBorderSpace (LPCRECT);
  249.     virtual HRESULT   _IFUNC SetBorderSpace (LPCRECT);
  250.      
  251.     virtual HRESULT   _IFUNC InsertContainerMenus (HMENU,BOleMenuWidths FAR*);
  252.     virtual HRESULT   _IFUNC SetFrameMenu (HMENU);
  253.     virtual void      _IFUNC RestoreUI ();
  254.     virtual HRESULT   _IFUNC Accelerator (LPMSG);
  255.     virtual HRESULT   _IFUNC GetAccelerators (HACCEL FAR*, int FAR*);
  256.  
  257.     // IBContainer methods
  258.     //
  259.     virtual HRESULT   _IFUNC AllowInPlace ();
  260.     virtual HRESULT   _IFUNC BringToFront ();
  261.     virtual HRESULT   _IFUNC FindDropDest (LPPOINT, PIBDropDest FAR*);
  262.  
  263.     // ISite methods
  264.     //
  265.     virtual HRESULT _IFUNC SiteShow(BOOL);
  266.     virtual HRESULT _IFUNC DiscardUndo();
  267.     virtual HRESULT _IFUNC GetSiteRect(LPRECT,LPRECT);
  268.     virtual HRESULT _IFUNC SetSiteRect(LPCRECT);
  269.     virtual HRESULT _IFUNC SetSiteExtent(LPCSIZE);
  270.     virtual void    _IFUNC Invalidate(BOleInvalidate);
  271.     virtual void    _IFUNC OnSetFocus(BOOL);
  272.     virtual HRESULT _IFUNC Init(PIBDataProvider pP, PIBPart pPart, LPCOLESTR psz, BOOL fHatchWnd);
  273.     virtual void    _IFUNC Disconnect ();
  274.     virtual HRESULT _IFUNC GetZoom (BOleScaleFactor *pScale);
  275.     virtual HRESULT _IFUNC CalcZoom (LPCRECT rcposRect);
  276.  
  277.     // ILinkable methods
  278.     //
  279.     virtual HRESULT _IFUNC GetMoniker(IMoniker FAR* FAR* ppMon);
  280.     virtual HRESULT _IFUNC OnRename(PIBLinkable pILContainer, LPCOLESTR szName);
  281.   
  282.   // IBDataState
  283.   // IsDirty is implemented as part of IPersitStorage
  284.   virtual void _IFUNC SetDirty (BOOL fDirty);
  285.     
  286. protected:
  287.  
  288.     // Implementation methods
  289.     //
  290.     HRESULT      _IFUNC GetMetaFileData (HGLOBAL&);
  291.     HGLOBAL   _IFUNC GetObjDescData ();
  292.     HRESULT   _IFUNC GetEmbeddedObjectData (LPFORMATETC, LPSTGMEDIUM);
  293.     HRESULT   _IFUNC GetLinkSourceData(LPMONIKER, REFCLSID, LPFORMATETC, LPSTGMEDIUM);
  294.     void    _IFUNC GetFormatFlags(BOOL *fEmbed, BOOL *fLinkable);
  295.     void    _IFUNC GetFormatList(LPFORMATETC *ppList, UINT *pCount);
  296.     void    _IFUNC GetFormatCount(UINT *pCount);
  297.     void    _IFUNC GetFormatInfo(BOOL *fEmbed, BOOL *fLinkable, LPFORMATETC *ppList, UINT *pCount);
  298.     
  299.     LPSTORAGE _IFUNC CreateStorageInMemory (DWORD);
  300.  
  301.     HRESULT _IFUNC Lock (BOOL fLock, BOOL fLastUnlockReleases);
  302.     HRESULT _IFUNC ShowWindow ();
  303.     HRESULT _IFUNC HideWindow (BOOL fShutdown);
  304.     HRESULT _IFUNC AssembleMenus ();
  305.     void      _IFUNC DisassembleMenus ();
  306.     HRESULT _IFUNC DoInPlaceActivate (BOOL fActivateOnly);
  307.     HRESULT _IFUNC DoInPlaceShow (BOOL fActivateOnly);
  308.     HRESULT _IFUNC DoUIActivate ();
  309.     HRESULT _IFUNC DoInPlaceDeactivate ();
  310.     HRESULT _IFUNC DoUIDeactivate ();
  311.     HRESULT _IFUNC DoInPlaceHide ();
  312.     HRESULT _IFUNC DoClose ();
  313. };
  314.  
  315. #endif
  316.  
  317.