MiniCADDoc.cpp
上传用户:netltd
上传日期:2013-02-12
资源大小:7234k
文件大小:4k
源码类别:

绘图程序

开发平台:

Visual C++

  1. // MiniCADDoc.cpp : implementation of the CMiniCADDoc class
  2. //
  3. #include "stdafx.h"
  4. #include "MiniCADDoc.h"
  5. #ifdef _DEBUG
  6. #define new DEBUG_NEW
  7. #undef THIS_FILE
  8. static char THIS_FILE[] = __FILE__;
  9. #endif
  10. /////////////////////////////////////////////////////////////////////////////
  11. // CMiniCADDoc
  12. IMPLEMENT_DYNCREATE(CMiniCADDoc, CDocument)
  13. BEGIN_MESSAGE_MAP(CMiniCADDoc, CDocument)
  14. //{{AFX_MSG_MAP(CMiniCADDoc)
  15. //}}AFX_MSG_MAP
  16. END_MESSAGE_MAP()
  17. /////////////////////////////////////////////////////////////////////////////
  18. /////////////////////////////////////////////////////////////////////////////
  19. // CMiniCADDoc construction/destruction
  20. CMiniCADDoc::CMiniCADDoc()
  21. {
  22. // TODO: add one-time construction code here
  23. pApp = (CMiniCADApp*)AfxGetApp();
  24. DocumentIndex = 0;
  25. }
  26. CMiniCADDoc::~CMiniCADDoc()
  27. {
  28. }
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CMiniCADDoc serialization
  31. void CMiniCADDoc::Serialize(CArchive& ar)
  32. {
  33. if (ar.IsStoring())
  34. {
  35. // TODO: add storing code here
  36. }
  37. else
  38. {
  39. // TODO: add loading code here
  40. }
  41. FileInfo.Serialize(ar);
  42. MyOperate.Serialize(ar);
  43. }
  44. /////////////////////////////////////////////////////////////////////////////
  45. // CMiniCADDoc diagnostics
  46. #ifdef _DEBUG
  47. void CMiniCADDoc::AssertValid() const
  48. {
  49. CDocument::AssertValid();
  50. }
  51. void CMiniCADDoc::Dump(CDumpContext& dc) const
  52. {
  53. CDocument::Dump(dc);
  54. }
  55. #endif //_DEBUG
  56. /////////////////////////////////////////////////////////////////////////////
  57. // CMiniCADDoc commands
  58. BOOL CMiniCADDoc::OnNewDocument()
  59. {
  60. if (!CDocument::OnNewDocument())
  61. return FALSE;
  62. //获取新建文档的信息
  63. FileInfo = pApp->NewFileInfo;
  64.     
  65. //改写最近文件列表
  66. pApp->pRecentFileList->Add((LPCTSTR)(FileInfo.FilePath + "\" + FileInfo.FileName));
  67. pApp->pRecentFileList->WriteList();
  68. return TRUE;
  69. }
  70. BOOL CMiniCADDoc::OnOpenDocument(LPCTSTR lpszPathName) 
  71. {
  72. if (!CDocument::OnOpenDocument(lpszPathName))
  73. return FALSE;
  74. pApp->pRecentFileList->Add((LPCTSTR)(FileInfo.FilePath + "\" + FileInfo.FileName));
  75. pApp->pRecentFileList->WriteList();
  76. return TRUE;
  77. }
  78. void CMiniCADDoc::OnCloseDocument() 
  79. {
  80. CDocument::OnCloseDocument();
  81. }
  82. BOOL CMiniCADDoc::SaveDocument() 
  83. {
  84. // TODO: Add your specialized code here and/or call the base class
  85. /*
  86.     int index;
  87. CMyObjectInfo* pLineInfo;
  88. CMyObjectInfo* pRectInfo;
  89. CMyObjectInfo* pCircleInfo;
  90. CMyObjectInfo* pArcInfo;
  91. index = 0;
  92. while(index < MyOperate.m_LineInfoArray.GetSize())
  93. {
  94. pLineInfo = (CMyObjectInfo*)MyOperate.m_LineInfoArray.GetAt(index);
  95. if(pLineInfo->m_del == TRUE)
  96. {
  97. delete (CMyLine*)MyOperate.m_LineArray.GetAt(index);
  98. MyOperate.m_LineArray.RemoveAt(index);
  99. delete (CMyObjectInfo*)MyOperate.m_LineInfoArray.GetAt(index);
  100. MyOperate.m_LineInfoArray.RemoveAt(index);
  101. }
  102. else
  103. index++;
  104. }
  105. index = 0;
  106. while(index < MyOperate.m_RectInfoArray.GetSize())
  107. {
  108. pRectInfo = (CMyObjectInfo*)MyOperate.m_RectInfoArray.GetAt(index);
  109. if(pRectInfo->m_del == TRUE)
  110. {
  111. delete (CMyRect*)MyOperate.m_RectArray.GetAt(index);
  112. MyOperate.m_RectArray.RemoveAt(index);
  113. delete (CMyObjectInfo*)MyOperate.m_RectInfoArray.GetAt(index);
  114. MyOperate.m_RectInfoArray.RemoveAt(index);
  115. }
  116. else
  117. index++;
  118. }
  119. index = 0;
  120. while(index < MyOperate.m_CircleInfoArray.GetSize())
  121. {
  122. pCircleInfo = (CMyObjectInfo*)MyOperate.m_CircleInfoArray.GetAt(index);
  123. if(pCircleInfo->m_del == TRUE)
  124. {
  125. delete (CMyCircle*)MyOperate.m_CircleArray.GetAt(index);
  126. MyOperate.m_CircleArray.RemoveAt(index);
  127. delete (CMyObjectInfo*)MyOperate.m_CircleInfoArray.GetAt(index);
  128. MyOperate.m_CircleInfoArray.RemoveAt(index);
  129. }
  130. else
  131. index++;
  132. }
  133. index = 0;
  134. while(index < MyOperate.m_ArcInfoArray.GetSize())
  135. {
  136. pArcInfo = (CMyObjectInfo*)MyOperate.m_ArcInfoArray.GetAt(index);
  137. if(pArcInfo->m_del == TRUE)
  138. {
  139. delete (CMyArc*)MyOperate.m_ArcArray.GetAt(index);
  140. MyOperate.m_ArcArray.RemoveAt(index);
  141. delete (CMyObjectInfo*)MyOperate.m_ArcInfoArray.GetAt(index);
  142. MyOperate.m_ArcInfoArray.RemoveAt(index);
  143. }
  144. else
  145. index++;
  146. }
  147.     for(index = 0; index < MyCommand.m_CommandArray.GetSize(); index++)
  148. delete (CMyCommandStruct*)MyCommand.m_CommandArray.GetAt(index);
  149. MyCommand.m_CommandArray.RemoveAll();
  150.     MyCommand.CommandPointer = -1;
  151. */
  152. CString PathName = FileInfo.FilePath + "\" + FileInfo.FileName;
  153. return CDocument::OnSaveDocument(PathName);
  154. }