DrawObj.h
上传用户:seaboy_04
上传日期:2013-02-24
资源大小:284k
文件大小:3k
源码类别:

其他行业

开发平台:

Visual C++

  1. // DrawObj.h: interface for the CDrawObj class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_DRAWOBJ_H__1F9C3913_D28E_4925_BCAE_75347FAC48C6__INCLUDED_)
  5. #define AFX_DRAWOBJ_H__1F9C3913_D28E_4925_BCAE_75347FAC48C6__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. class CDrawView;
  10. class CDrawDoc;
  11. class CDrawObj : public CObject  
  12. {
  13. protected:
  14. DECLARE_SERIAL(CDrawObj);
  15. CDrawObj();
  16. // Constructors
  17. public:
  18. CDrawObj(const CRect& position);
  19. // Attributes
  20. CRect m_position;
  21. CDrawDoc* m_pDocument;
  22. virtual int GetHandleCount();
  23. virtual CPoint GetHandle(int nHandle);
  24. CRect GetHandleRect(int nHandleID, CDrawView* pView);
  25. virtual HCURSOR GetHandleCursor(int nHandle);
  26. virtual void SetLineColor(COLORREF color);
  27. virtual void SetFillColor(COLORREF color);
  28. // Operations
  29. virtual void Draw(CDC* pDC);
  30. enum TrackerState { normal, selected, active };
  31. virtual void DrawTracker(CDC* pDC, TrackerState state);
  32. virtual void MoveTo(const CRect& positon, CDrawView* pView = NULL);
  33. virtual int HitTest(CPoint point, CDrawView* pView, BOOL bSelected);
  34. virtual BOOL Intersects(const CRect& rect);
  35. virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL);
  36. virtual void OnOpen(CDrawView* pView);
  37. virtual void OnEditProperties();
  38. virtual CDrawObj* Clone(CDrawDoc* pDoc = NULL);
  39. virtual void Remove();
  40. void Invalidate();
  41. // Implementation
  42. public:
  43. virtual ~CDrawObj();
  44. virtual void Serialize(CArchive& ar);
  45. #ifdef _DEBUG
  46. void AssertValid();
  47. #endif
  48. // implementation data
  49. protected:
  50. BOOL m_bPen;
  51. LOGPEN m_logpen;
  52. BOOL m_bBrush;
  53. LOGBRUSH m_logbrush;
  54. public:
  55. int   m_nOrder;
  56. int   m_nType;
  57. };
  58. // special 'list' class for this application (requires afxtempl.h)
  59. typedef CTypedPtrList<CObList, CDrawObj*> CDrawObjList;
  60. ////////////////////////////////////////////////////////////////////////
  61. // specialized draw objects
  62. class CDrawRect : public CDrawObj
  63. {
  64. protected:
  65. DECLARE_SERIAL(CDrawRect);
  66. CDrawRect();
  67. public:
  68. CDrawRect(const CRect& position);
  69. void DrawCircle(CDC* pDC,CRect rect);
  70. // Implementation
  71. public:
  72. virtual void Serialize(CArchive& ar);
  73. virtual void Draw(CDC* pDC);
  74. //virtual void DrawCircle(CDC* pDC,CRect rect);
  75. virtual int GetHandleCount();
  76. virtual CPoint GetHandle(int nHandle);
  77. virtual HCURSOR GetHandleCursor(int nHandle);
  78. virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL);
  79. virtual BOOL Intersects(const CRect& rect);
  80. virtual CDrawObj* Clone(CDrawDoc* pDoc);
  81. protected:
  82. enum Shape { rectangle, roundRectangle, ellipse, line, circle };
  83. Shape m_nShape;
  84. CPoint m_roundness; // for roundRect corners
  85. friend class CRectTool;
  86. };
  87. class CDrawItem;    // COleClientItem derived class
  88. class CDrawOleObj : public CDrawObj
  89. {
  90. protected:
  91. DECLARE_SERIAL(CDrawOleObj);
  92. CDrawOleObj();
  93. public:
  94. CDrawOleObj(const CRect& position);
  95. // Implementation
  96. public:
  97. virtual void Serialize(CArchive& ar);
  98. virtual void Draw(CDC* pDC);
  99. virtual CDrawObj* Clone(CDrawDoc* pDoc);
  100. virtual void OnOpen(CDrawView* pView);
  101. virtual void MoveTo(const CRect& positon, CDrawView* pView = NULL);
  102. virtual void OnEditProperties();
  103. virtual void Remove();
  104. virtual ~CDrawOleObj();
  105. static BOOL c_bShowItems;
  106. CDrawItem* m_pClientItem;
  107. CSize m_extent; // current extent is tracked separate from scaled position
  108. };
  109. #endif // !defined(AFX_DRAWOBJ_H__1F9C3913_D28E_4925_BCAE_75347FAC48C6__INCLUDED_)