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

对话框与窗口

开发平台:

Visual C++

  1. // ScribDoc.h : interface of the CScribbleDoc class
  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. // Forward declaration of data structure class
  21. class CScribbleItem;
  22. /////////////////////////////////////////////////////////////////////////////
  23. // class CStroke
  24. //
  25. // A stroke is a series of connected points in the scribble drawing.
  26. // A scribble document may have multiple strokes.
  27. class CStroke : public CObject
  28. {
  29. public:
  30. CStroke(UINT nPenWidth);
  31. protected:
  32. CStroke();
  33. DECLARE_SERIAL(CStroke)
  34. // Attributes
  35. protected:
  36. UINT                   m_nPenWidth;    // one pen width applies to entire stroke
  37. public:
  38. CArray<CPoint,CPoint>  m_pointArray;   // series of connected points
  39. CRect               m_rectBounding; // smallest rect that surrounds all
  40.                                     // of the points in the stroke
  41.                                     // measured in MM_LOENGLISH units
  42.                                     // (0.01 inches, with Y-axis inverted)
  43. public:
  44. CRect& GetBoundingRect() { return m_rectBounding; }
  45. // Operations
  46. public:
  47. BOOL DrawStroke(CDC* pDC);
  48. void FinishStroke();
  49. public:
  50. virtual void Serialize(CArchive& ar);
  51. };
  52. class CScribbleDoc : public COleServerDoc
  53. {
  54. protected: // create from serialization only
  55. CScribbleDoc();
  56. DECLARE_DYNCREATE(CScribbleDoc)
  57. // Attributes
  58. protected:
  59. // The document keeps track of the current pen width on
  60. // behalf of all views. We'd like the user interface of
  61. // Scribble to be such that if the user chooses the Draw
  62. // Thick Line command, it will apply to all views, not just
  63. // the view that currently has the focus.
  64. UINT            m_nPenWidth;        // current user-selected pen width
  65. BOOL            m_bThickPen;        // TRUE if current pen is thick
  66. UINT            m_nThinWidth;
  67. UINT            m_nThickWidth;
  68. CPen            m_penCur;           // pen created according to
  69.                                     // user-selected pen style (width)
  70. public:
  71. CTypedPtrList<CObList,CStroke*>     m_strokeList;
  72. CPen*           GetCurrentPen() { return &m_penCur; }
  73. protected:
  74. CSize           m_sizeDoc;
  75. public:
  76. CSize GetDocSize() { return m_sizeDoc; }
  77. CScribbleItem* GetEmbeddedItem()
  78. { return (CScribbleItem*)COleServerDoc::GetEmbeddedItem(); }
  79. // Operations
  80. public:
  81. CStroke* NewStroke();
  82. // Overrides
  83. // ClassWizard generated virtual function overrides
  84. //{{AFX_VIRTUAL(CScribbleDoc)
  85. protected:
  86. virtual COleServerItem* OnGetEmbeddedItem();
  87. public:
  88. virtual BOOL OnNewDocument();
  89. virtual void Serialize(CArchive& ar);
  90. virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
  91. virtual void DeleteContents();
  92. //}}AFX_VIRTUAL
  93. // Implementation
  94. protected:
  95. void ReplacePen();
  96. void OnSetItemRects(LPCRECT lpPosRect, LPCRECT lpClipRect);
  97. public:
  98. virtual ~CScribbleDoc();
  99. #ifdef _DEBUG
  100. virtual void AssertValid() const;
  101. virtual void Dump(CDumpContext& dc) const;
  102. #endif
  103. protected:
  104. void            InitDocument();
  105. // Generated message map functions
  106. protected:
  107. //{{AFX_MSG(CScribbleDoc)
  108. afx_msg void OnEditClearAll();
  109. afx_msg void OnPenThickOrThin();
  110. afx_msg void OnUpdateEditClearAll(CCmdUI* pCmdUI);
  111. afx_msg void OnUpdatePenThickOrThin(CCmdUI* pCmdUI);
  112. afx_msg void OnPenWidths();
  113. afx_msg void OnEditCopy();
  114. //}}AFX_MSG
  115. DECLARE_MESSAGE_MAP()
  116. };