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. };
  55. // special 'list' class for this application (requires afxtempl.h)
  56. typedef CTypedPtrList<CObList, CDrawObj*> CDrawObjList;
  57. ////////////////////////////////////////////////////////////////////////
  58. // specialized draw objects
  59. class CDrawRect : public CDrawObj
  60. {
  61. protected:
  62. DECLARE_SERIAL(CDrawRect);
  63. CDrawRect();
  64. public:
  65. CDrawRect(const CRect& position);
  66. void DrawCircle(CDC* pDC,CRect rect);
  67. // Implementation
  68. public:
  69. virtual void Serialize(CArchive& ar);
  70. virtual void Draw(CDC* pDC);
  71. //virtual void DrawCircle(CDC* pDC,CRect rect);
  72. virtual int GetHandleCount();
  73. virtual CPoint GetHandle(int nHandle);
  74. virtual HCURSOR GetHandleCursor(int nHandle);
  75. virtual void MoveHandleTo(int nHandle, CPoint point, CDrawView* pView = NULL);
  76. virtual BOOL Intersects(const CRect& rect);
  77. virtual CDrawObj* Clone(CDrawDoc* pDoc);
  78. protected:
  79. enum Shape { rectangle, roundRectangle, ellipse, line, circle };
  80. Shape m_nShape;
  81. CPoint m_roundness; // for roundRect corners
  82. friend class CRectTool;
  83. };
  84. class CDrawItem;    // COleClientItem derived class
  85. class CDrawOleObj : public CDrawObj
  86. {
  87. protected:
  88. DECLARE_SERIAL(CDrawOleObj);
  89. CDrawOleObj();
  90. public:
  91. CDrawOleObj(const CRect& position);
  92. // Implementation
  93. public:
  94. virtual void Serialize(CArchive& ar);
  95. virtual void Draw(CDC* pDC);
  96. virtual CDrawObj* Clone(CDrawDoc* pDoc);
  97. virtual void OnOpen(CDrawView* pView);
  98. virtual void MoveTo(const CRect& positon, CDrawView* pView = NULL);
  99. virtual void OnEditProperties();
  100. virtual void Remove();
  101. virtual ~CDrawOleObj();
  102. static BOOL c_bShowItems;
  103. CDrawItem* m_pClientItem;
  104. CSize m_extent; // current extent is tracked separate from scaled position
  105. };
  106. #endif // !defined(AFX_DRAWOBJ_H__1F9C3913_D28E_4925_BCAE_75347FAC48C6__INCLUDED_)