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

对话框与窗口

开发平台:

Visual C++

  1. // drawobj.h - interface for CDrawObj and derivatives
  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. #ifndef __DRAWOBJ_H__
  21. #define __DRAWOBJ_H__
  22. class CDrawView;
  23. class CDrawDoc;
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CDrawObj - base class for all 'drawable objects'
  26. class CDrawObj : public CObject
  27. {
  28. protected:
  29. DECLARE_SERIAL(CDrawObj);
  30. CDrawObj();
  31. // Constructors
  32. public:
  33. CDrawObj(const CRect& position);
  34. // Attributes
  35. CRect m_position;
  36. CDrawDoc* m_pDocument;
  37. virtual int GetHandleCount();
  38. virtual CPoint GetHandle(int nHandle);
  39. CRect GetHandleRect(int nHandleID, CDrawView* pView);
  40. virtual HCURSOR GetHandleCursor(int nHandle);
  41. virtual void SetLineColor(COLORREF color);
  42. virtual void SetFillColor(COLORREF color);
  43. // Operations
  44. virtual void Draw(CDC* pDC);
  45. enum TrackerState { normal, selected, active };
  46. virtual void DrawTracker(CDC* pDC, TrackerState state);
  47. virtual void MoveTo(const CRect& positon, CDrawView* pView = NULL);
  48. virtual int HitTest(CPoint point, CDrawView* pView, BOOL bSelected);
  49. virtual BOOL Intersects(const CRect& rect);
  50. virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL);
  51. virtual void OnOpen(CDrawView* pView);
  52. virtual void OnEditProperties();
  53. virtual CDrawObj* Clone(CDrawDoc* pDoc = NULL);
  54. virtual void Remove();
  55. void Invalidate();
  56. // Implementation
  57. public:
  58. virtual ~CDrawObj();
  59. virtual void Serialize(CArchive& ar);
  60. #ifdef _DEBUG
  61. void AssertValid();
  62. #endif
  63. // implementation data
  64. BOOL m_bPen;
  65. LOGPEN m_logpen;
  66. BOOL m_bBrush;
  67. LOGBRUSH m_logbrush;
  68. };
  69. // special 'list' class for this application (requires afxtempl.h)
  70. class CDrawObjList : public CTypedPtrList<CObList, CDrawObj*>
  71. {
  72. };
  73. ////////////////////////////////////////////////////////////////////////
  74. // specialized draw objects
  75. class CDrawRect : public CDrawObj
  76. {
  77. protected:
  78. DECLARE_SERIAL(CDrawRect);
  79. CDrawRect();
  80. public:
  81. CDrawRect(const CRect& position);
  82. // Implementation
  83. public:
  84. virtual void Serialize(CArchive& ar);
  85. virtual void Draw(CDC* pDC);
  86. virtual int GetHandleCount();
  87. virtual CPoint GetHandle(int nHandle);
  88. virtual HCURSOR GetHandleCursor(int nHandle);
  89. virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL);
  90. virtual BOOL Intersects(const CRect& rect);
  91. virtual CDrawObj* Clone(CDrawDoc* pDoc);
  92. protected:
  93. enum Shape { rectangle, roundRectangle, ellipse, line };
  94. Shape m_nShape;
  95. CPoint m_roundness; // for roundRect corners
  96. friend class CRectTool;
  97. };
  98. /////////////////////////////////////////////////////////////////////////////
  99. class CDrawPoly;
  100. class CDrawPoly : public CDrawObj
  101. {
  102. protected:
  103. DECLARE_SERIAL(CDrawPoly);
  104. CDrawPoly();
  105. public:
  106. CDrawPoly(const CRect& position);
  107. // Operations
  108. void AddPoint(const CPoint& point, CDrawView* pView = NULL);
  109. BOOL RecalcBounds(CDrawView* pView = NULL);
  110. // Implementation
  111. public:
  112. virtual ~CDrawPoly();
  113. virtual void Serialize(CArchive& ar);
  114. virtual void Draw(CDC* pDC);
  115. virtual void MoveTo(const CRect& position, CDrawView* pView = NULL);
  116. virtual int GetHandleCount();
  117. virtual CPoint GetHandle(int nHandle);
  118. virtual HCURSOR GetHandleCursor(int nHandle);
  119. virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL);
  120. virtual BOOL Intersects(const CRect& rect);
  121. virtual CDrawObj* Clone(CDrawDoc* pDoc);
  122. protected:
  123. int m_nPoints;
  124. int m_nAllocPoints;
  125. CPoint* m_points;
  126. CDrawPoly* m_pDrawObj;
  127. friend class CPolyTool;
  128. };
  129. class CDrawItem;    // COleClientItem derived class
  130. class CDrawOleObj : public CDrawObj
  131. {
  132. protected:
  133. DECLARE_SERIAL(CDrawOleObj);
  134. CDrawOleObj();
  135. public:
  136. CDrawOleObj(const CRect& position);
  137. // Implementation
  138. public:
  139. virtual void Serialize(CArchive& ar);
  140. virtual void Draw(CDC* pDC);
  141. virtual CDrawObj* Clone(CDrawDoc* pDoc);
  142. virtual void OnOpen(CDrawView* pView);
  143. virtual void MoveTo(const CRect& positon, CDrawView* pView = NULL);
  144. virtual void OnEditProperties();
  145. virtual void Remove();
  146. virtual ~CDrawOleObj();
  147. static BOOL c_bShowItems;
  148. CDrawItem* m_pClientItem;
  149. CSize m_extent; // current extent is tracked separate from scaled position
  150. };
  151. #endif // __DRAWOBJ_H__