home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / com / activedocument / framer / site.h < prev   
C/C++ Source or Header  |  1997-08-12  |  5KB  |  186 lines

  1. /*
  2.  * SITE.H
  3.  * View Site for Document Objects.
  4.  *
  5.  * Copyright (c)1995-1997 Microsoft Corporation, All Rights Reserved
  6.  */
  7.  
  8.  
  9. #ifndef _SITE_H_
  10. #define _SITE_H_
  11.  
  12.  
  13. class CImpIOleClientSite : public IOleClientSite
  14.     {
  15.     protected:
  16.         ULONG               m_cRef;
  17.         class CSite        *m_pSite;
  18.         LPUNKNOWN           m_pUnkOuter;
  19.  
  20.     public:
  21.         CImpIOleClientSite(class CSite *, IUnknown *);
  22.         ~CImpIOleClientSite(void);
  23.  
  24.         STDMETHODIMP QueryInterface(REFIID, void **);
  25.         STDMETHODIMP_(ULONG) AddRef(void);
  26.         STDMETHODIMP_(ULONG) Release(void);
  27.  
  28.         STDMETHODIMP SaveObject(void);
  29.         STDMETHODIMP GetMoniker(DWORD, DWORD, LPMONIKER *);
  30.         STDMETHODIMP GetContainer(LPOLECONTAINER *);
  31.         STDMETHODIMP ShowObject(void);
  32.         STDMETHODIMP OnShowWindow(BOOL);
  33.         STDMETHODIMP RequestNewObjectLayout(void);
  34.     };
  35.  
  36. typedef CImpIOleClientSite *PCImpIOleClientSite;
  37.  
  38.  
  39.  
  40. class CImpIAdviseSink : public IAdviseSink
  41.     {
  42.     protected:
  43.         ULONG               m_cRef;
  44.         class CSite        *m_pSite;
  45.         LPUNKNOWN           m_pUnkOuter;
  46.  
  47.     public:
  48.         CImpIAdviseSink(class CSite *, IUnknown *);
  49.         ~CImpIAdviseSink(void);
  50.  
  51.         STDMETHODIMP QueryInterface(REFIID, void **);
  52.         STDMETHODIMP_(ULONG) AddRef(void);
  53.         STDMETHODIMP_(ULONG) Release(void);
  54.  
  55.         STDMETHODIMP_(void)  OnDataChange(LPFORMATETC, LPSTGMEDIUM);
  56.         STDMETHODIMP_(void)  OnViewChange(DWORD, LONG);
  57.         STDMETHODIMP_(void)  OnRename(LPMONIKER);
  58.         STDMETHODIMP_(void)  OnSave(void);
  59.         STDMETHODIMP_(void)  OnClose(void);
  60.     };
  61.  
  62.  
  63. typedef CImpIAdviseSink *PCImpIAdviseSink;
  64.  
  65.  
  66. class CImpIOleInPlaceSite : public IOleInPlaceSite
  67.     {
  68.     protected:
  69.         ULONG               m_cRef;
  70.         class CSite        *m_pSite;
  71.         LPUNKNOWN           m_pUnkOuter;
  72.  
  73.     public:
  74.         CImpIOleInPlaceSite(class CSite *, IUnknown *);
  75.         ~CImpIOleInPlaceSite(void);
  76.  
  77.         STDMETHODIMP QueryInterface(REFIID, void **);
  78.         STDMETHODIMP_(ULONG) AddRef(void);
  79.         STDMETHODIMP_(ULONG) Release(void);
  80.  
  81.         STDMETHODIMP GetWindow(HWND *);
  82.         STDMETHODIMP ContextSensitiveHelp(BOOL);
  83.         STDMETHODIMP CanInPlaceActivate(void);
  84.         STDMETHODIMP OnInPlaceActivate(void);
  85.         STDMETHODIMP OnUIActivate(void);
  86.         STDMETHODIMP GetWindowContext(LPOLEINPLACEFRAME *
  87.                         , LPOLEINPLACEUIWINDOW *, LPRECT, LPRECT
  88.                         , LPOLEINPLACEFRAMEINFO);
  89.         STDMETHODIMP Scroll(SIZE);
  90.         STDMETHODIMP OnUIDeactivate(BOOL);
  91.         STDMETHODIMP OnInPlaceDeactivate(void);
  92.         STDMETHODIMP DiscardUndoState(void);
  93.         STDMETHODIMP DeactivateAndUndo(void);
  94.         STDMETHODIMP OnPosRectChange(LPCRECT);
  95.     };
  96.  
  97. typedef CImpIOleInPlaceSite *PCImpIOleInPlaceSite;
  98.  
  99.  
  100. class CImpIOleDocumentSite : public IOleDocumentSite
  101.     {
  102.     protected:
  103.         ULONG               m_cRef;
  104.         class CSite        *m_pSite;
  105.         LPUNKNOWN           m_pUnkOuter;
  106.  
  107.     public:
  108.         CImpIOleDocumentSite(class CSite *, IUnknown *);
  109.         ~CImpIOleDocumentSite(void);
  110.  
  111.         STDMETHODIMP QueryInterface(REFIID, void **);
  112.         STDMETHODIMP_(ULONG) AddRef(void);
  113.         STDMETHODIMP_(ULONG) Release(void);
  114.  
  115.         STDMETHODIMP ActivateMe(IOleDocumentView *);
  116.     };
  117.  
  118. typedef CImpIOleDocumentSite *PCImpIOleDocumentSite;
  119.  
  120.  
  121.  
  122. /*
  123.  * The CSite class, a COM object with the interfaces IOleClientSite,
  124.  * IAdviseSink, IOleInPlaceSite, and IOleDocumentSite.
  125.  */
  126.  
  127.  
  128. class CSite : public IUnknown
  129.     {
  130.     friend CImpIOleClientSite;
  131.     friend CImpIAdviseSink;
  132.     friend CImpIOleInPlaceSite;
  133.     friend CImpIOleDocumentSite;
  134.  
  135.     private:
  136.         ULONG           m_cRef;
  137.         DWORD           m_dwID;
  138.         HWND            m_hWnd; //Client area window of parent
  139.  
  140.         class CFrame   *m_pFR;
  141.  
  142.         BOOL            m_fInitialized; //Something here?
  143.         LPSTORAGE       m_pIStorage;    //Storage for object
  144.         LPSTREAM        m_pIStream;        //Info stream for object
  145.  
  146.         //Object interfaces
  147.         IUnknown          *m_pObj;
  148.         IOleObject        *m_pIOleObject;
  149.         IOleInPlaceObject *m_pIOleIPObject;
  150.         IOleDocumentView  *m_pIOleDocView;
  151.  
  152.         BOOL               m_fDocObj;   //Document object here?
  153.  
  154.         //Our interfaces
  155.         PCImpIOleClientSite   m_pImpIOleClientSite;
  156.         PCImpIAdviseSink      m_pImpIAdviseSink;
  157.         PCImpIOleInPlaceSite  m_pImpIOleIPSite;
  158.         PCImpIOleDocumentSite m_pImpIOleDocumentSite;
  159.  
  160.  
  161.     protected:
  162.         BOOL    ObjectInitialize(LPUNKNOWN);
  163.  
  164.     public:
  165.         CSite(DWORD, HWND, CFrame *);
  166.         ~CSite(void);
  167.  
  168.         //Gotta have an IUnknown for delegation
  169.         STDMETHODIMP QueryInterface(REFIID, void **);
  170.         STDMETHODIMP_(ULONG) AddRef(void);
  171.         STDMETHODIMP_(ULONG) Release(void);
  172.  
  173.         BOOL        Create(LPTSTR, IStorage *);
  174.         BOOL        CreateStorage(IStorage *);
  175.         void        Close(BOOL);
  176.         void        Update(void);
  177.         void        Destroy(IStorage *);
  178.         void        Activate(LONG);
  179.         void        UpdateObjectRects(void);
  180.     };
  181.  
  182.  
  183. typedef CSite *PCSite;
  184.  
  185. #endif //_SITE_H_
  186.