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

Windows编程

开发平台:

Visual C++

  1. // ScribDoc.h : interface of the CScribbleDoc class
  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. /////////////////////////////////////////////////////////////////////////////
  13. /////////////////////////////////////////////////////////////////////////////
  14. // class CStroke
  15. //
  16. // A stroke is a series of connected points in the scribble drawing.
  17. // A scribble document may have multiple strokes.
  18. class CStroke : public CObject
  19. {
  20. public:
  21. CStroke(UINT nPenWidth);
  22. protected:
  23. CStroke();
  24. DECLARE_SERIAL(CStroke)
  25. // Attributes
  26. protected:
  27. UINT                   m_nPenWidth;    // one pen width applies to entire stroke
  28. public:
  29. CArray<CPoint,CPoint>  m_pointArray;   // series of connected points
  30. // Operations
  31. public:
  32. BOOL DrawStroke(CDC* pDC);
  33. public:
  34. virtual void Serialize(CArchive& ar);
  35. };
  36. class CScribbleDoc : public CDocument
  37. {
  38. protected: // create from serialization only
  39. CScribbleDoc();
  40. DECLARE_DYNCREATE(CScribbleDoc)
  41. // Attributes
  42. protected:
  43. // The document keeps track of the current pen width on
  44. // behalf of all views. We'd like the user interface of
  45. // Scribble to be such that if the user chooses the Draw
  46. // Thick Line command, it will apply to all views, not just
  47. // the view that currently has the focus.
  48. UINT            m_nPenWidth;        // current user-selected pen width
  49. BOOL            m_bThickPen;        // TRUE if current pen is thick
  50. UINT            m_nThinWidth;
  51. UINT            m_nThickWidth;
  52. CPen            m_penCur;           // pen created according to
  53. // user-selected pen style (width)
  54. public:
  55. CTypedPtrList<CObList,CStroke*>     m_strokeList;
  56. CPen*           GetCurrentPen() { return &m_penCur; }
  57. // Operations
  58. public:
  59. CStroke* NewStroke();
  60. // Overrides
  61. // ClassWizard generated virtual function overrides
  62. //{{AFX_VIRTUAL(CScribbleDoc)
  63. public:
  64. virtual BOOL OnNewDocument();
  65. virtual void Serialize(CArchive& ar);
  66. virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
  67. virtual void DeleteContents();
  68. //}}AFX_VIRTUAL
  69. // Implementation
  70. protected:
  71. void ReplacePen();
  72. public:
  73. virtual ~CScribbleDoc();
  74. #ifdef _DEBUG
  75. virtual void AssertValid() const;
  76. virtual void Dump(CDumpContext& dc) const;
  77. #endif
  78. protected:
  79. void            InitDocument();
  80. // Generated message map functions
  81. protected:
  82. //{{AFX_MSG(CScribbleDoc)
  83. afx_msg void OnEditClearAll();
  84. afx_msg void OnPenThickOrThin();
  85. afx_msg void OnUpdateEditClearAll(CCmdUI* pCmdUI);
  86. afx_msg void OnUpdatePenThickOrThin(CCmdUI* pCmdUI);
  87. //}}AFX_MSG
  88. DECLARE_MESSAGE_MAP()
  89. };