home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / mfc / general / propdlg / shapedoc.cpp < prev    next >
C/C++ Source or Header  |  1998-03-26  |  3KB  |  112 lines

  1. // shapedoc.cpp : implementation of the CShapesDoc 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. #include "stdafx.h"
  14. #include "propdlg.h"
  15.  
  16. #include "shapeobj.h"
  17. #include "shapedoc.h"
  18.  
  19. #ifdef _DEBUG
  20. #undef THIS_FILE
  21. static char BASED_CODE THIS_FILE[] = __FILE__;
  22. #endif
  23.  
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CShapesDoc
  26.  
  27. IMPLEMENT_DYNCREATE(CShapesDoc, CDocument)
  28.  
  29. BEGIN_MESSAGE_MAP(CShapesDoc, CDocument)
  30.     //{{AFX_MSG_MAP(CShapesDoc)
  31.     //}}AFX_MSG_MAP
  32. END_MESSAGE_MAP()
  33.  
  34. /////////////////////////////////////////////////////////////////////////////
  35. // CShapesDoc construction/destruction
  36.  
  37. CShapesDoc::CShapesDoc()
  38. {
  39. }
  40.  
  41. CShapesDoc::~CShapesDoc()
  42. {
  43.     POSITION pos = m_shapeList.GetHeadPosition();
  44.     while (pos != NULL)
  45.     {
  46.         delete m_shapeList.GetNext(pos);
  47.     }
  48. }
  49.  
  50. BOOL CShapesDoc::OnNewDocument()
  51. {
  52.     if (!CDocument::OnNewDocument())
  53.         return FALSE;
  54.  
  55.     CShape* pShapeNew = new CShape(
  56.         black,
  57.         rectangle,
  58.         CRect(20,20,120,120));
  59.     AddShape(pShapeNew);
  60.  
  61.     return TRUE;
  62. }
  63.  
  64. /////////////////////////////////////////////////////////////////////////////
  65. // CShapesDoc operations
  66.  
  67. void CShapesDoc::AddShape(CShape* pShapeNew)
  68. {
  69.     m_shapeList.AddHead(pShapeNew);
  70.     UpdateAllViews(NULL);
  71.     SetModifiedFlag();
  72. }
  73.  
  74. CShape* CShapesDoc::HitTest(CPoint pt)
  75. {
  76.     CShape* pShapeHit;
  77.     POSITION pos = m_shapeList.GetHeadPosition();
  78.     while (pos != NULL)
  79.     {
  80.         pShapeHit = m_shapeList.GetNext(pos);
  81.         if (pShapeHit->m_rect.PtInRect(pt))
  82.             return pShapeHit;
  83.     }
  84.     return NULL;
  85. }
  86.  
  87. /////////////////////////////////////////////////////////////////////////////
  88. // CShapesDoc serialization
  89.  
  90. void CShapesDoc::Serialize(CArchive& ar)
  91. {
  92.     m_shapeList.Serialize(ar);
  93. }
  94.  
  95. /////////////////////////////////////////////////////////////////////////////
  96. // CShapesDoc diagnostics
  97.  
  98. #ifdef _DEBUG
  99. void CShapesDoc::AssertValid() const
  100. {
  101.     CDocument::AssertValid();
  102. }
  103.  
  104. void CShapesDoc::Dump(CDumpContext& dc) const
  105. {
  106.     CDocument::Dump(dc);
  107. }
  108. #endif //_DEBUG
  109.  
  110. /////////////////////////////////////////////////////////////////////////////
  111. // CShapesDoc commands
  112.