DRAWOBJ.H
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:5k
源码类别:

界面编程

开发平台:

Visual C++

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