DRAWOBJ.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:

Windows编程

开发平台:

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