home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / mfc / include / afxdocob.h < prev    next >
C/C++ Source or Header  |  1998-06-16  |  11KB  |  396 lines

  1. // This is a part of the Microsoft Foundation Classes C++ library.
  2. // Copyright (C) 1996-1998 Microsoft Corporation
  3. // All rights reserved.
  4. //
  5. // This source code is only intended as a supplement to the
  6. // Microsoft Foundation Classes Reference and related
  7. // electronic documentation provided with the library.
  8. // See these sources for detailed information regarding the
  9. // Microsoft Foundation Classes product.
  10.  
  11. #ifndef __AFXDOCOB_H__
  12. #define __AFXDOCOB_H__
  13.  
  14. //WINBUG: these error codes are needed by MFC's IPrint implementation
  15. // but aren't available in the SDK headers.  Someday, these #define's
  16. // can be removed.
  17.  
  18. #ifndef PRINT_E_CANCELLED
  19. #define PRINT_E_CANCELLED 0x80040160L
  20. #endif
  21. #ifndef PRINT_E_NOSUCHPAGE
  22. #define PRINT_E_NOSUCHPAGE 0x80040161L
  23. #endif
  24.  
  25. #ifdef _AFX_NO_OLE_SUPPORT
  26.     #error OLE classes not supported in this library variant.
  27. #endif
  28.  
  29. #ifndef __AFXOLE_H__
  30.     #include <afxole.h>
  31. #endif
  32.  
  33. #ifndef __docobj_h__
  34.     #include <docobj.h>     // defines Document Object interfaces
  35. #endif
  36.  
  37. #ifdef _AFX_MINREBUILD
  38. #pragma component(minrebuild, off)
  39. #endif
  40. #ifndef _AFX_FULLTYPEINFO
  41. #pragma component(mintypeinfo, on)
  42. #endif
  43.  
  44. #ifdef _AFX_PACKING
  45. #pragma pack(push, _AFX_PACKING)
  46. #endif
  47.  
  48. // AFXDLL support
  49. #undef AFX_DATA
  50. #define AFX_DATA AFX_OLE_DATA
  51.  
  52.  
  53. /////////////////////////////////////////////////////////////////////////////
  54. // AFXDOCOB.H - MFC OLE Document Object support
  55.  
  56. //CCmdUI
  57. class COleCmdUI;
  58.  
  59. //CCmdTarg
  60. class CDocObjectServer;
  61.  
  62. //COleIPFrameWnd
  63. class COleDocIPFrameWnd;
  64.  
  65.  
  66. /////////////////////////////////////////////////////////////////////////////
  67. // COleCmdUI
  68.  
  69. class COleCmdUI : public CCmdUI
  70. {
  71. public:
  72.     COleCmdUI(OLECMD* rgCmds, ULONG cCmds, const GUID* m_pGroup);
  73.     virtual void Enable(BOOL bOn);
  74.     virtual void SetCheck(int nCheck);
  75.     virtual void SetText(LPCTSTR lpszText);
  76.     virtual BOOL DoUpdate(CCmdTarget* pTarget, BOOL bDisableIfNoHandler);
  77.     DWORD m_nCmdTextFlag;
  78.  
  79. protected:
  80.     OLECMD* m_rgCmds;
  81.     const GUID* m_pguidCmdGroup;
  82. public:
  83.     CString m_strText;
  84.  
  85.     friend class CCmdTarget;
  86. };
  87.  
  88.  
  89. #define ON_OLECMD(pguid, olecmdid, id) \
  90.     { pguid, (ULONG)olecmdid, (UINT)id },
  91.  
  92. #define ON_OLECMD_OPEN() \
  93.     ON_OLECMD(NULL, OLECMDID_OPEN, ID_FILE_OPEN)
  94.  
  95. #define ON_OLECMD_NEW() \
  96.     ON_OLECMD(NULL, OLECMDID_NEW, ID_FILE_NEW)
  97.  
  98. #define ON_OLECMD_SAVE() \
  99.     ON_OLECMD(NULL, OLECMDID_SAVE, ID_FILE_SAVE)
  100.  
  101. #define ON_OLECMD_SAVE_AS() \
  102.     ON_OLECMD(NULL, OLECMDID_SAVEAS, ID_FILE_SAVE_AS)
  103.  
  104. #define ON_OLECMD_SAVE_COPY_AS() \
  105.     ON_OLECMD(NULL, OLECMDID_SAVECOPYAS, ID_FILE_SAVE_COPY_AS)
  106.  
  107. #define ON_OLECMD_PRINT() \
  108.     ON_OLECMD(NULL, OLECMDID_PRINT, ID_FILE_PRINT)
  109.  
  110. #define ON_OLECMD_PRINTPREVIEW() \
  111.     ON_OLECMD(NULL, OLECMDID_PRINTPREVIEW, ID_FILE_PRINT_PREVIEW)
  112.  
  113. #define ON_OLECMD_PAGESETUP() \
  114.     ON_OLECMD(NULL, OLECMDID_PAGESETUP, ID_FILE_PAGE_SETUP)
  115.  
  116. #define ON_OLECMD_CUT() \
  117.     ON_OLECMD(NULL, OLECMDID_CUT, ID_EDIT_CUT)
  118.  
  119. #define ON_OLECMD_COPY() \
  120.     ON_OLECMD(NULL, OLECMDID_COPY, ID_EDIT_COPY)
  121.  
  122. #define ON_OLECMD_PASTE() \
  123.     ON_OLECMD(NULL, OLECMDID_PASTE, ID_EDIT_PASTE)
  124.  
  125. #define ON_OLECMD_PASTESPECIAL() \
  126.     ON_OLECMD(NULL, OLECMDID_PASTESPECIAL, ID_EDIT_PASTE_SPECIAL)
  127.  
  128. #define ON_OLECMD_UNDO() \
  129.     ON_OLECMD(NULL, OLECMDID_UNDO, ID_EDIT_UNDO)
  130.  
  131. #define ON_OLECMD_REDO() \
  132.     ON_OLECMD(NULL, OLECMDID_REDO, ID_EDIT_REDO)
  133.  
  134. #define ON_OLECMD_SELECTALL() \
  135.     ON_OLECMD(NULL, OLECMDID_SELECTALL, ID_EDIT_SELECT_ALL)
  136.  
  137. #define ON_OLECMD_CLEARSELECTION() \
  138.     ON_OLECMD(NULL, OLECMDID_CLEARSELECTION, ID_EDIT_CLEAR)
  139.  
  140.  
  141. /////////////////////////////////////////////////////////////////////////////
  142. // CDocObjectServer class
  143.  
  144. class CDocObjectServer : public CCmdTarget
  145. {
  146.     DECLARE_DYNAMIC(CDocObjectServer)
  147.  
  148. // Constructors
  149. public:
  150.     CDocObjectServer(COleServerDoc* pOwner,
  151.             LPOLEDOCUMENTSITE pDocSite = NULL);
  152.  
  153. // Attributes
  154. public:
  155.  
  156. // Operations
  157. public:
  158.    void ActivateDocObject();
  159.  
  160. // Overridables
  161. protected:
  162.    // Document Overridables
  163.  
  164.    // View Overridables
  165.    virtual void OnApplyViewState(CArchive& ar);
  166.    virtual void OnSaveViewState(CArchive& ar);
  167.    virtual HRESULT OnActivateView();
  168.  
  169. // Implementation
  170. public:
  171.     virtual ~CDocObjectServer();
  172.     void ReleaseDocSite();
  173.     void SetDocSite(LPOLEDOCUMENTSITE pNewSite);
  174.     COleDocIPFrameWnd* GetControllingFrame() const;
  175. protected:
  176.     STDMETHODIMP OnExecOleCmd(const GUID* pguidCmdGroup,
  177.         DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG* pvarargIn,
  178.         VARIANTARG* pvarargOut);
  179.     BOOL DoPreparePrinting(CView* pView, CPrintInfo* printInfo);
  180.     void DoPrepareDC(CView* pView, CDC* pdcPrint, CPrintInfo* pprintInfo);
  181.     void DoPrint(CView* pView, CDC* pdcPrint, CPrintInfo* pprintInfo);
  182.     void DoBeginPrinting(CView* pView, CDC* pDC, CPrintInfo* pprintInfo);
  183.     void DoEndPrinting(CView* pView, CDC* pDC, CPrintInfo* pprintInfo);
  184.  
  185. #ifdef _DEBUG
  186.     virtual void AssertValid() const;
  187.     virtual void Dump(CDumpContext& dc) const;
  188. #endif
  189.  
  190.    // Overrides
  191. protected:
  192.     // ClassWizard generated virtual function overrides
  193.     //{{AFX_VIRTUAL(CDocObjectServer)
  194.     public:
  195.     virtual void OnCloseDocument();
  196.     //}}AFX_VIRTUAL
  197.  
  198.     // Implementation Data
  199. protected:
  200.     // Document Data
  201.     LPOLEDOCUMENTSITE m_pDocSite;
  202.     COleServerDoc* m_pOwner;
  203.  
  204.     // Print Data
  205.     LONG m_nFirstPage;
  206.     LPCONTINUECALLBACK m_pContinueCallback;
  207.  
  208.     // View Data
  209.     LPOLEINPLACESITE  m_pViewSite;
  210.  
  211.    // Implementation Helpers
  212. protected:
  213.     void OnSetItemRects(LPRECT lprcPosRect, LPRECT lprcClipRect);
  214. //  LPUNKNOWN GetInterfaceHook(const void* iid);
  215.  
  216.     // Generated message map functions
  217. protected:
  218.     //{{AFX_MSG(CDocObjectServer)
  219.         // NOTE - the ClassWizard will add and remove member functions here.
  220.     //}}AFX_MSG
  221.     DECLARE_MESSAGE_MAP()
  222.  
  223. // Interface Maps
  224. public:
  225.     BEGIN_INTERFACE_PART(OleObject, IOleObject)
  226.         INIT_INTERFACE_PART(CDocObjServerDoc, DocOleObject)
  227.         STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
  228.         STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
  229.         STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
  230.         STDMETHOD(Close)(DWORD);
  231.         STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
  232.         STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
  233.         STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
  234.         STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
  235.         STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
  236.         STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
  237.         STDMETHOD(Update)();
  238.         STDMETHOD(IsUpToDate)();
  239.         STDMETHOD(GetUserClassID)(CLSID*);
  240.         STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
  241.         STDMETHOD(SetExtent)(DWORD, LPSIZEL);
  242.         STDMETHOD(GetExtent)(DWORD, LPSIZEL);
  243.         STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
  244.         STDMETHOD(Unadvise)(DWORD);
  245.         STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
  246.         STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
  247.         STDMETHOD(SetColorScheme)(LPLOGPALETTE);
  248.     END_INTERFACE_PART(OleObject)
  249.  
  250.     BEGIN_INTERFACE_PART(OleDocument, IOleDocument)
  251.         INIT_INTERFACE_PART(CDocObjectServer, OleDocument)
  252.         STDMETHOD(CreateView)(LPOLEINPLACESITE, LPSTREAM, DWORD, LPOLEDOCUMENTVIEW*);
  253.         STDMETHOD(GetDocMiscStatus)(LPDWORD);
  254.         STDMETHOD(EnumViews)(LPENUMOLEDOCUMENTVIEWS*, LPOLEDOCUMENTVIEW*);
  255.     END_INTERFACE_PART(OleDocument)
  256.  
  257.     BEGIN_INTERFACE_PART(OleDocumentView, IOleDocumentView)
  258.         INIT_INTERFACE_PART(CDocObjectServer, OleDocumentView)
  259.         STDMETHOD(SetInPlaceSite)(LPOLEINPLACESITE);
  260.         STDMETHOD(GetInPlaceSite)(LPOLEINPLACESITE*);
  261.         STDMETHOD(GetDocument)(LPUNKNOWN*);
  262.         STDMETHOD(SetRect)(LPRECT);
  263.         STDMETHOD(GetRect)(LPRECT);
  264.         STDMETHOD(SetRectComplex)(LPRECT, LPRECT, LPRECT, LPRECT);
  265.         STDMETHOD(Show)(BOOL);
  266.         STDMETHOD(UIActivate)(BOOL);
  267.         STDMETHOD(Open)();
  268.         STDMETHOD(CloseView)(DWORD);
  269.         STDMETHOD(SaveViewState)(LPSTREAM);
  270.         STDMETHOD(ApplyViewState)(LPSTREAM);
  271.         STDMETHOD(Clone)(LPOLEINPLACESITE, LPOLEDOCUMENTVIEW*);
  272.     END_INTERFACE_PART(OleDocumentView)
  273.  
  274.     BEGIN_INTERFACE_PART(OleCommandTarget, IOleCommandTarget)
  275.         INIT_INTERFACE_PART(CDocObjectServer, OleCommandTarget)
  276.         STDMETHOD(QueryStatus)(const GUID*, ULONG, OLECMD[], OLECMDTEXT*);
  277.         STDMETHOD(Exec)(const GUID*, DWORD, DWORD, VARIANTARG*, VARIANTARG*);
  278.     END_INTERFACE_PART(OleCommandTarget)
  279.  
  280.     BEGIN_INTERFACE_PART(Print, IPrint)
  281.         INIT_INTERFACE_PART(CDocObjectServer, Print)
  282.         STDMETHOD(SetInitialPageNum)(LONG);
  283.         STDMETHOD(GetPageInfo)(LPLONG, LPLONG);
  284.         STDMETHOD(Print)(DWORD, DVTARGETDEVICE**, PAGESET**, LPSTGMEDIUM,
  285.                  LPCONTINUECALLBACK, LONG, LPLONG, LPLONG);
  286.     END_INTERFACE_PART(Print)
  287.  
  288.     DECLARE_INTERFACE_MAP()
  289. };
  290.  
  291.  
  292. /////////////////////////////////////////////////////////////////////////////
  293. // COleDocIPFrameWnd class
  294.  
  295. class COleDocIPFrameWnd : public COleIPFrameWnd
  296. {
  297.     DECLARE_DYNCREATE(COleDocIPFrameWnd)
  298.  
  299. // Constructors
  300. public:
  301.     COleDocIPFrameWnd();
  302.  
  303. // Attributes
  304. public:
  305.  
  306. // Operations
  307. public:
  308.  
  309. // Overridables
  310. protected:
  311.  
  312. // Implementation
  313. public:
  314.     virtual ~COleDocIPFrameWnd();
  315. #ifdef _DEBUG
  316.     virtual void AssertValid() const;
  317.     virtual void Dump(CDumpContext& dc) const;
  318. #endif
  319.  
  320.     // Overrides
  321.     // ClassWizard generated virtual function overrides
  322.     //{{AFX_VIRTUAL(COleDocIPFrameWnd)
  323.     //}}AFX_VIRTUAL
  324. protected:
  325.     virtual void OnRequestPositionChange(LPCRECT lpRect);
  326.     virtual void RecalcLayout(BOOL bNotify = TRUE);
  327.  
  328.     // Menu Merging support
  329.     HMENU m_hMenuHelpPopup;
  330.     virtual BOOL BuildSharedMenu();
  331.     virtual void DestroySharedMenu();
  332.  
  333.     // Generated message map functions
  334.     //{{AFX_MSG(COleDocIPFrameWnd)
  335.         // NOTE - the ClassWizard will add and remove member functions here.
  336.     //}}AFX_MSG
  337.     DECLARE_MESSAGE_MAP()
  338. };
  339.  
  340.  
  341. class CDocObjectServerItem : public COleServerItem
  342. {
  343.     DECLARE_DYNAMIC(CDocObjectServerItem)
  344.  
  345. // Constructors
  346. protected:
  347.     CDocObjectServerItem(COleServerDoc* pServerDoc, BOOL bAutoDelete);
  348.  
  349. // Attributes
  350. public:
  351.     COleServerDoc* GetDocument() const
  352.         { return (COleServerDoc*) COleServerItem::GetDocument(); }
  353.  
  354. // Overridables
  355. public:
  356.  
  357. // Implementation
  358. public:
  359.     virtual ~CDocObjectServerItem();
  360. #ifdef _DEBUG
  361.     virtual void AssertValid() const;
  362.     virtual void Dump(CDumpContext& dc) const;
  363. #endif
  364.  
  365.    // Overrides
  366. protected:
  367.    virtual void OnDoVerb(LONG iVerb);
  368.    virtual void OnHide();
  369.    virtual void OnOpen();
  370.    virtual void OnShow();
  371.     // ClassWizard generated virtual function overrides
  372.     //{{AFX_VIRTUAL(CDocObjectServerItem)
  373.     //}}AFX_VIRTUAL
  374.  
  375. };
  376.  
  377. /////////////////////////////////////////////////////////////////////////////
  378.  
  379. #ifdef _AFX_PACKING
  380. #pragma pack(pop)
  381. #endif
  382.  
  383. #undef AFX_DATA
  384. #define AFX_DATA
  385.  
  386. #ifdef _AFX_MINREBUILD
  387. #pragma component(minrebuild, on)
  388. #endif
  389. #ifndef _AFX_FULLTYPEINFO
  390. #pragma component(mintypeinfo, off)
  391. #endif
  392.  
  393. #endif //__AFXDOCOB_H__
  394.  
  395. /////////////////////////////////////////////////////////////////////////////
  396.