drawvw.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:7k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // drawvw.h : interface of the CDrawView class
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. // Hints for UpdateAllViews/OnUpdate
  21. #define HINT_UPDATE_WINDOW      0
  22. #define HINT_UPDATE_DRAWOBJ     1
  23. #define HINT_UPDATE_SELECTION   2
  24. #define HINT_DELETE_SELECTION   3
  25. #define HINT_UPDATE_OLE_ITEMS   4
  26. #include "MainFrm.h"
  27. class CDrawObj;
  28. class CDrawView;
  29. class CDrawObjListEx : public CDrawObjList
  30. {
  31. public:
  32. CDrawObjListEx(CDrawView* pView)
  33. {
  34. m_pView = pView;
  35. }
  36. void RemoveAt(POSITION pos)
  37. {
  38. CDrawObjList::RemoveAt(pos);
  39. ((CMainFrame*)AfxGetMainWnd())->UpdatePropertyGridContent(m_pView);
  40. }
  41. void AddTail(CDrawObj* pObj)
  42. {
  43. CDrawObjList::AddTail(pObj);
  44. ((CMainFrame*)AfxGetMainWnd())->UpdatePropertyGridContent(m_pView);
  45. }
  46. void RemoveAll()
  47. {
  48. CDrawObjList::RemoveAll();
  49. ((CMainFrame*)AfxGetMainWnd())->UpdatePropertyGridContent(m_pView);
  50. }
  51. CDrawView* m_pView;
  52. };
  53. class CDrawView : public CScrollView
  54. {
  55. protected: // create from serialization only
  56. CDrawView();
  57. DECLARE_DYNCREATE(CDrawView)
  58. // Attributes
  59. public:
  60. CDrawDoc* GetDocument()
  61. { return (CDrawDoc*)m_pDocument; }
  62. void SetPageSize(CSize size);
  63. CRect GetInitialPosition();
  64. // Operations
  65. public:
  66. void DocToClient(CRect& rect);
  67. void DocToClient(CPoint& point);
  68. void ClientToDoc(CPoint& point);
  69. void ClientToDoc(CRect& rect);
  70. void Select(CDrawObj* pObj, BOOL bAdd = FALSE);
  71. void SelectWithinRect(CRect rect, BOOL bAdd = FALSE);
  72. void Deselect(CDrawObj* pObj);
  73. void CloneSelection();
  74. void UpdateActiveItem();
  75. void InvalObj(CDrawObj* pObj);
  76. void Remove(CDrawObj* pObj);
  77. void PasteNative(COleDataObject& dataObject);
  78. void PasteEmbedded(COleDataObject& dataObject, CPoint point );
  79. // Implementation
  80. protected:
  81. // added for drop-target functionality
  82. COleDropTarget m_dropTarget;        // for drop target functionality
  83. CPoint m_dragPoint;                 // current position
  84. CSize m_dragSize;                   // size of dragged object
  85. CSize m_dragOffset;                 // offset between pt and drag object corner
  86. DROPEFFECT m_prevDropEffect;
  87. BOOL m_bDragDataAcceptable;
  88. BOOL GetObjectInfo(COleDataObject* pDataObject,
  89. CSize* pSize, CSize* pOffset);
  90. // end of drop-target additions
  91. public:
  92. virtual ~CDrawView();
  93. #ifdef _DEBUG
  94. virtual void AssertValid() const;
  95. virtual void Dump(CDumpContext& dc) const;
  96. #endif
  97. virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);  // overriden to record time/date
  98. virtual void OnDraw(CDC* pDC);  // overridden to draw this view
  99. virtual void OnActivateView(BOOL bActivate, CView* pActiveView, CView* pDeactiveView);
  100. virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);
  101. virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo);
  102. virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll);
  103. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  104. void DrawGrid(CDC* pDC);
  105. // added for drop-target functionality
  106. virtual BOOL OnDrop(COleDataObject* pDataObject,
  107. DROPEFFECT dropEffect, CPoint point);
  108. virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject,
  109. DWORD grfKeyState, CPoint point);
  110. virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject,
  111. DWORD grfKeyState, CPoint point);
  112. virtual void OnDragLeave();
  113. static CLIPFORMAT m_cfObjectDescriptor;
  114. // end of drop-target additions
  115. static CLIPFORMAT m_cfDraw; // custom clipboard format
  116. CDrawObjListEx m_selection;
  117. BOOL m_bGrid;
  118. COLORREF m_gridColor;
  119. BOOL m_bActive; // is the view active?
  120. protected:
  121. virtual void OnInitialUpdate(); // called first time after construct
  122. // Printing support
  123. virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
  124. virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
  125. virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
  126. // OLE Container support
  127. public:
  128. virtual BOOL IsSelected(const CObject* pDocItem) const;
  129. // Generated message map functions
  130. protected:
  131. //{{AFX_MSG(CDrawView)
  132. afx_msg void OnInsertObject();
  133. afx_msg void OnCancelEdit();
  134. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  135. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  136. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  137. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  138. afx_msg void OnDrawSelect();
  139. afx_msg void OnDrawRoundRect();
  140. afx_msg void OnDrawRect();
  141. afx_msg void OnDrawLine();
  142. afx_msg void OnDrawEllipse();
  143. afx_msg void OnUpdateDrawEllipse(CCmdUI* pCmdUI);
  144. afx_msg void OnUpdateDrawLine(CCmdUI* pCmdUI);
  145. afx_msg void OnUpdateDrawRect(CCmdUI* pCmdUI);
  146. afx_msg void OnUpdateDrawRoundRect(CCmdUI* pCmdUI);
  147. afx_msg void OnUpdateDrawSelect(CCmdUI* pCmdUI);
  148. afx_msg void OnUpdateSingleSelect(CCmdUI* pCmdUI);
  149. afx_msg void OnEditSelectAll();
  150. afx_msg void OnEditClear();
  151. afx_msg void OnUpdateAnySelect(CCmdUI* pCmdUI);
  152. afx_msg void OnDrawPolygon();
  153. afx_msg void OnUpdateDrawPolygon(CCmdUI* pCmdUI);
  154. afx_msg void OnSize(UINT nType, int cx, int cy);
  155. afx_msg void OnViewGrid();
  156. afx_msg void OnUpdateViewGrid(CCmdUI* pCmdUI);
  157. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  158. afx_msg void OnObjectFillColor();
  159. afx_msg void OnObjectLineColor();
  160. afx_msg void OnObjectMoveBack();
  161. afx_msg void OnObjectMoveForward();
  162. afx_msg void OnObjectMoveToBack();
  163. afx_msg void OnObjectMoveToFront();
  164. afx_msg void OnEditCopy();
  165. afx_msg void OnUpdateEditCopy(CCmdUI* pCmdUI);
  166. afx_msg void OnEditCut();
  167. afx_msg void OnUpdateEditCut(CCmdUI* pCmdUI);
  168. afx_msg void OnEditPaste();
  169. afx_msg void OnUpdateEditPaste(CCmdUI* pCmdUI);
  170. afx_msg void OnFilePrint();
  171. afx_msg void OnSetFocus(CWnd* pOldWnd);
  172. afx_msg void OnViewShowObjects();
  173. afx_msg void OnUpdateViewShowObjects(CCmdUI* pCmdUI);
  174. afx_msg void OnEditProperties();
  175. afx_msg void OnUpdateEditProperties(CCmdUI* pCmdUI);
  176. afx_msg void OnDestroy();
  177. afx_msg void OnClose();
  178. afx_msg void OnUpdateEditSelectAll(CCmdUI* pCmdUI);
  179. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  180. afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
  181. afx_msg void OnCancelMode();
  182. //}}AFX_MSG
  183. DECLARE_MESSAGE_MAP()
  184. };
  185. /////////////////////////////////////////////////////////////////////////////