home *** CD-ROM | disk | FTP | other *** search
/ ActiveX Programming Unleashed CD / AXU.iso / source / chap18 / doserver / binddoc.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-02  |  7.0 KB  |  229 lines

  1. // binddoc.h : interface of the BinderDocObject OLE server document class
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1995 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12.  
  13. #ifndef __BINDDOC_H__
  14. #define __BINDDOC_H__
  15.  
  16. #include <docobj.h>     // defines Document Object interfaces
  17.  
  18.  
  19. /////////////////////////////////////////////////////////////////////////////
  20. // OLECMD Map definitions
  21.  
  22. struct OLE_CMDMAP_ENTRY  
  23. {
  24.    const GUID* pguid;   // id of the command group
  25.    ULONG       cmdID;   // OLECMD ID
  26.    UINT        nID;     // corresponding WM_COMMAND message ID 
  27. };
  28.  
  29. struct OLE_CMDMAP
  30. {
  31. #ifdef _AFXDLL
  32.     const OLE_CMDMAP* (PASCAL* pfnGetBaseMap)();
  33. #else
  34.     const OLE_CMDMAP* pBaseMap;
  35. #endif
  36.     const OLE_CMDMAP_ENTRY* lpEntries;
  37. };
  38.  
  39. #ifdef _AFXDLL
  40. #define DECLARE_OLECMD_MAP() \
  41. private: \
  42.     static const OLE_CMDMAP_ENTRY _commandEntries[]; \
  43. protected: \
  44.     static AFX_DATA const OLE_CMDMAP commandMap; \
  45.     static const OLE_CMDMAP* PASCAL _GetBaseCommandMap(); \
  46.     virtual const OLE_CMDMAP* GetCommandMap() const; \
  47.  
  48. #else
  49. #define DECLARE_OLECMD_MAP() \
  50. private: \
  51.     static const OLE_CMDMAP_ENTRY _commandEntries[]; \
  52. protected: \
  53.     static AFX_DATA const OLE_CMDMAP commandMap; \
  54.     virtual const OLE_CMDMAP* GetCommandMap() const; \
  55.  
  56. #endif
  57.  
  58. #ifdef _AFXDLL
  59. #define BEGIN_OLECMD_MAP(theClass, baseClass) \
  60.     const OLE_CMDMAP* PASCAL theClass::_GetBaseCommandMap() \
  61.         { return &baseClass::commandMap; } \
  62.     const OLE_CMDMAP* theClass::GetCommandMap() const \
  63.         { return &theClass::commandMap; } \
  64.     AFX_DATADEF const OLE_CMDMAP theClass::commandMap = \
  65.     { &theClass::_GetBaseCommandMap, &theClass::_commandEntries[0] }; \
  66.     const OLE_CMDMAP_ENTRY theClass::_commandEntries[] = \
  67.     { \
  68.  
  69. #else
  70. #define BEGIN_OLECMD_MAP(theClass, baseClass) \
  71.     const OLE_CMDMAP* theClass::GetCommandMap() const \
  72.         { return &theClass::commandMap; } \
  73.     AFX_DATADEF const OLE_CMDMAP theClass::commandMap = \
  74.     { &baseClass::commandMap, &theClass::_commandEntries[0] }; \
  75.     const OLE_CMDMAP_ENTRY theClass::_commandEntries[] = \
  76.     { \
  77.  
  78. #endif
  79.  
  80. #define END_OLECMD_MAP() \
  81.         {NULL, 0, 0} \
  82.     }; \
  83.  
  84. #define ON_OLECMD(pguid, olecmdid, id) \
  85.     { pguid, (ULONG)olecmdid, (UINT)id },
  86.  
  87. /////////////////////////////////////////////////////////////////////////////
  88. // CDocObjectServerDoc
  89.  
  90. class CDocObjectServerDoc : public COleServerDoc
  91. {
  92.    DECLARE_DYNAMIC(CDocObjectServerDoc)
  93.  
  94. // Constructors 
  95. public:
  96.     CDocObjectServerDoc(); 
  97.  
  98. // Attributes
  99. public:
  100.    BOOL IsDocObject() const;
  101.  
  102. // Operations
  103. public:
  104.    void ActivateDocObject();
  105.  
  106. // Overridables
  107. protected:
  108.    // Document Overridables
  109.  
  110.    // View Overridables
  111.    virtual void    OnApplyViewState(CArchive& ar);
  112.    virtual HRESULT OnActivateView();
  113.  
  114. // Implementation
  115. public:
  116.     virtual ~CDocObjectServerDoc();
  117. #ifdef _DEBUG
  118.     virtual void AssertValid() const;
  119.     virtual void Dump(CDumpContext& dc) const;
  120. #endif
  121.  
  122.    // Overrides
  123. protected:
  124.     // ClassWizard generated virtual function overrides
  125.     //{{AFX_VIRTUAL(CDocObjectServerDoc)
  126.     public:
  127.     virtual void OnCloseDocument();
  128.     //}}AFX_VIRTUAL
  129.  
  130.    // Implementation Data
  131. protected:
  132.    // Document Data
  133.    LPOLEDOCUMENTSITE m_pDocSite;
  134.  
  135.    // View Data
  136.    LPOLEINPLACESITE  m_pViewSite;
  137.  
  138.    // Implementation Helpers
  139. protected:
  140.  
  141.     // Generated message map functions
  142. protected:
  143.     //{{AFX_MSG(CDocObjectServerDoc)
  144.         // NOTE - the ClassWizard will add and remove member functions here.
  145.     //}}AFX_MSG
  146.     DECLARE_MESSAGE_MAP()
  147.  
  148. // Interface Maps
  149. public:
  150.     BEGIN_INTERFACE_PART(DocOleObject, IOleObject)
  151.         INIT_INTERFACE_PART(CDocObjServerDoc, DocOleObject)
  152.         STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
  153.         STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
  154.         STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
  155.         STDMETHOD(Close)(DWORD);
  156.         STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
  157.         STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
  158.         STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
  159.         STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
  160.         STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
  161.         STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
  162.         STDMETHOD(Update)();
  163.         STDMETHOD(IsUpToDate)();
  164.         STDMETHOD(GetUserClassID)(CLSID*);
  165.         STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
  166.         STDMETHOD(SetExtent)(DWORD, LPSIZEL);
  167.         STDMETHOD(GetExtent)(DWORD, LPSIZEL);
  168.         STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
  169.         STDMETHOD(Unadvise)(DWORD);
  170.         STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
  171.         STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
  172.         STDMETHOD(SetColorScheme)(LPLOGPALETTE);
  173.     END_INTERFACE_PART(DocOleObject)
  174.  
  175.     BEGIN_INTERFACE_PART(OleDocument, IOleDocument)
  176.         INIT_INTERFACE_PART(CDocObjectServerDoc, OleDocument)
  177.         STDMETHOD(CreateView)(LPOLEINPLACESITE, LPSTREAM, DWORD, LPOLEDOCUMENTVIEW*);
  178.         STDMETHOD(GetDocMiscStatus)(LPDWORD);
  179.         STDMETHOD(EnumViews)(LPENUMOLEDOCUMENTVIEWS*, LPOLEDOCUMENTVIEW*);
  180.     END_INTERFACE_PART(OleDocument)
  181.  
  182.    BEGIN_INTERFACE_PART(OleDocumentView, IOleDocumentView)
  183.       INIT_INTERFACE_PART(CDocObjectServerDoc, OleDocumentView)
  184.       STDMETHOD(SetInPlaceSite)(LPOLEINPLACESITE);
  185.       STDMETHOD(GetInPlaceSite)(LPOLEINPLACESITE*);
  186.       STDMETHOD(GetDocument)(LPUNKNOWN*);        
  187.       STDMETHOD(SetRect)(LPRECT);
  188.       STDMETHOD(GetRect)(LPRECT);
  189.       STDMETHOD(SetRectComplex)(LPRECT, LPRECT, LPRECT, LPRECT); 
  190.       STDMETHOD(Show)(BOOL);        
  191.       STDMETHOD(UIActivate)(BOOL);        
  192.       STDMETHOD(Open)();        
  193.       STDMETHOD(CloseView)(DWORD);
  194.       STDMETHOD(SaveViewState)(LPSTREAM);
  195.       STDMETHOD(ApplyViewState)(LPSTREAM);
  196.       STDMETHOD(Clone)(LPOLEINPLACESITE, LPOLEDOCUMENTVIEW*);        
  197.    END_INTERFACE_PART(OleDocumentView)
  198.  
  199.    BEGIN_INTERFACE_PART(OleCommandTarget, IOleCommandTarget)
  200.       INIT_INTERFACE_PART(CDocObjectServerDoc, OleCommandTarget)
  201.       STDMETHOD(QueryStatus)(const GUID*, ULONG, OLECMD*, OLECMDTEXT*);
  202.       STDMETHOD(Exec)(const GUID*, DWORD, DWORD, VARIANTARG*, VARIANTARG*);        
  203.    END_INTERFACE_PART(OleCommandTarget)
  204.  
  205.    BEGIN_INTERFACE_PART(Print, IPrint)
  206.       INIT_INTERFACE_PART(COleServerDoc, Print)
  207.       STDMETHOD(SetInitialPageNum)(LONG);
  208.       STDMETHOD(GetPageInfo)(LPLONG, LPLONG);
  209.       STDMETHOD(Print)(DWORD, DVTARGETDEVICE**, PAGESET**, LPSTGMEDIUM,
  210.                        LPCONTINUECALLBACK, LONG, LPLONG, LPLONG);        
  211.    END_INTERFACE_PART(Print)
  212.  
  213.    DECLARE_INTERFACE_MAP()
  214.  
  215. // OLECMD map - for handling commands sent via IOleCommandTarget
  216.    DECLARE_OLECMD_MAP()
  217. };
  218.  
  219. /////////////////////////////////////////////////////////////////////////////
  220. // Inline Functions
  221.  
  222. inline BOOL CDocObjectServerDoc::IsDocObject() const
  223.    { return (m_pDocSite != NULL) ? TRUE : FALSE; }
  224.  
  225. /////////////////////////////////////////////////////////////////////////////
  226.  
  227. #endif // #ifndef __BINDDOC_H__
  228.  
  229.