home *** CD-ROM | disk | FTP | other *** search
- // MiniDDoc.cpp : implementation of the CMiniDrawDoc class
- //
-
- #include "stdafx.h"
- #include "MiniDraw.h"
-
- #include "MiniDDoc.h"
-
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // CMiniDrawDoc
-
- IMPLEMENT_DYNCREATE(CMiniDrawDoc, CDocument)
-
- BEGIN_MESSAGE_MAP(CMiniDrawDoc, CDocument)
- //{{AFX_MSG_MAP(CMiniDrawDoc)
- ON_COMMAND(ID_EDIT_CLEAR_ALL, OnEditClearAll)
- ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR_ALL, OnUpdateEditClearAll)
- ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
- ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
- /////////////////////////////////////////////////////////////////////////////
- // CMiniDrawDoc construction/destruction
-
- CMiniDrawDoc::CMiniDrawDoc()
- {
- // TODO: add one-time construction code here
-
- }
-
- CMiniDrawDoc::~CMiniDrawDoc()
- {
- }
-
- BOOL CMiniDrawDoc::OnNewDocument()
- {
- if (!CDocument::OnNewDocument())
- return FALSE;
-
- // TODO: add reinitialization code here
- // (SDI documents will reuse this document)
-
- return TRUE;
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CMiniDrawDoc serialization
-
- void CMiniDrawDoc::Serialize(CArchive& ar)
- {
- if (ar.IsStoring())
- {
- // TODO: add storing code here
- m_LineArray.Serialize (ar);
- }
- else
- {
- // TODO: add loading code here
- m_LineArray.Serialize (ar);
- }
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CMiniDrawDoc diagnostics
-
- #ifdef _DEBUG
- void CMiniDrawDoc::AssertValid() const
- {
- CDocument::AssertValid();
- }
-
- void CMiniDrawDoc::Dump(CDumpContext& dc) const
- {
- CDocument::Dump(dc);
- }
- #endif //_DEBUG
-
- /////////////////////////////////////////////////////////////////////////////
- // CMiniDrawDoc commands
-
- IMPLEMENT_SERIAL (CLine, CObject, 1)
-
- void CLine::Draw (CDC *PDC)
- {
- PDC->MoveTo (m_X1, m_Y1);
- PDC->LineTo (m_X2, m_Y2);
- }
-
- void CLine::Serialize (CArchive& ar)
- {
- if (ar.IsStoring())
- ar << m_X1 << m_Y1 << m_X2 << m_Y2;
- else
- ar >> m_X1 >> m_Y1 >> m_X2 >> m_Y2;
- }
-
- void CMiniDrawDoc::AddLine (int X1, int Y1, int X2, int Y2)
- {
- CLine *PLine = new CLine (X1, Y1, X2, Y2);
- m_LineArray.Add (PLine);
- SetModifiedFlag ();
- }
-
- CLine *CMiniDrawDoc::GetLine (int Index)
- {
- if (Index < 0 || Index > m_LineArray.GetUpperBound ())
- return 0;
- return m_LineArray.GetAt (Index);
- }
-
- int CMiniDrawDoc::GetNumLines ()
- {
- return m_LineArray.GetSize ();
- }
-
- void CMiniDrawDoc::DeleteContents()
- {
- // TODO: Add your specialized code here and/or call the base class
-
- int Index = m_LineArray.GetSize ();
- while (Index--)
- delete m_LineArray.GetAt (Index);
- m_LineArray.RemoveAll ();
-
- CDocument::DeleteContents();
- }
-
- void CMiniDrawDoc::OnEditClearAll()
- {
- // TODO: Add your command handler code here
-
- DeleteContents ();
- UpdateAllViews (0);
- SetModifiedFlag ();
- }
-
- void CMiniDrawDoc::OnUpdateEditClearAll(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
-
- pCmdUI->Enable (m_LineArray.GetSize ());
- }
-
- void CMiniDrawDoc::OnEditUndo()
- {
- // TODO: Add your command handler code here
-
- int Index = m_LineArray.GetUpperBound ();
- if (Index > -1)
- {
- delete m_LineArray.GetAt (Index);
- m_LineArray.RemoveAt (Index);
- }
- UpdateAllViews (0);
- SetModifiedFlag ();
- }
-
- void CMiniDrawDoc::OnUpdateEditUndo(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
-
- pCmdUI->Enable (m_LineArray.GetSize ());
- }
-