DmsDoc.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. /**************************************************************************************************
  2. 版本所有(C), 2020-2022, 北京普达迪泰
  3. ***************************************************************************************************
  4. 文 件 名: DMSDoc.h
  5. 功能描述: 本项目采用MFC SDI多视图模式,此为文档类
  6. 版 本 号: 1.00初版
  7. 作 者: HYF
  8. 生成日期; 2021-12-20
  9. 最近修改:
  10. 函数列表:
  11. 修改历史:
  12. 1.日 期 :2021-12-20
  13. 作 者 : HYF
  14. 修改内容 : 创建文件
  15. **************************************************************************************************/
  16. #include "pch.h"
  17. #include "framework.h"
  18. #ifndef SHARED_HANDLERS
  19. #include "Dms.h"
  20. #endif
  21. #include "DmsDoc.h"
  22. #include "EquipTypeManager.h"
  23. #include "DictManager.h"
  24. #include "EquipTypePlaceManager.h"
  25. #include "EquipDataManager.h"
  26. #include "EquipDataPointManager.h"
  27. #include "EquipDataCircleManager.h"
  28. #include "EquipDataPlaneManager.h"
  29. #include "EquipDataLineManager.h"
  30. #include "EquipDataCylinderManager.h"
  31. #include "EquipDataAngleManager.h"
  32. #include "TaskManager.h"
  33. #include "PostureDataPointManager.h"
  34. #include "PostureDataAngleManager.h"
  35. #include <propkey.h>
  36. #ifdef _DEBUG
  37. #define new DEBUG_NEW
  38. #endif
  39. // CDmsDoc
  40. IMPLEMENT_DYNCREATE(CDmsDoc, CDocument)
  41. BEGIN_MESSAGE_MAP(CDmsDoc, CDocument)
  42. END_MESSAGE_MAP()
  43. // CDmsDoc 构造/析构
  44. CDmsDoc::CDmsDoc() noexcept
  45. {
  46. m_pEquipTypeManager = new EquipTypeManager();
  47. m_pDictManager = new DictManager();
  48. m_pEquipTypePlaceManager = new EquipTypePlaceManager();
  49. m_pTaskManager = new TaskManager();
  50. m_pEquipDataManager = new EquipDataManager();
  51. m_pEquipDataPointManager = new EquipDataPointManager();
  52. m_pEquipDataCircleManager = new EquipDataCircleManager();
  53. m_pEquipDataPlaneManager = new EquipDataPlaneManager();
  54. m_pEquipDataLineManager = new EquipDataLineManager();
  55. m_pEquipDataCylinderManager = new EquipDataCylinderManager();
  56. m_pEquipDataAngleManager = new EquipDataAngleManager();
  57. m_pPostureDataPointManager = new PostureDataPointManager();
  58. m_pPostureDataAngleManager = new PostureDataAngleManager();
  59. }
  60. CDmsDoc::~CDmsDoc()
  61. {
  62. // 释放资源
  63. delete m_pEquipTypeManager;
  64. delete m_pDictManager;
  65. delete m_pEquipTypePlaceManager;
  66. delete m_pTaskManager;
  67. delete m_pEquipDataManager;
  68. delete m_pEquipDataPlaneManager;
  69. delete m_pEquipDataCircleManager;
  70. delete m_pEquipDataLineManager;
  71. delete m_pEquipDataPointManager;
  72. delete m_pEquipDataCylinderManager;
  73. delete m_pEquipDataAngleManager;
  74. delete m_pPostureDataPointManager;
  75. delete m_pPostureDataAngleManager;
  76. }
  77. BOOL CDmsDoc::OnNewDocument()
  78. {
  79. if (!CDocument::OnNewDocument())
  80. return FALSE;
  81. // TODO: 在此添加重新初始化代码
  82. // (SDI 文档将重用该文档)
  83. return TRUE;
  84. }
  85. // CDmsDoc 序列化
  86. void CDmsDoc::Serialize(CArchive& ar)
  87. {
  88. if (ar.IsStoring())
  89. {
  90. // TODO: 在此添加存储代码
  91. }
  92. else
  93. {
  94. // TODO: 在此添加加载代码
  95. }
  96. }
  97. #ifdef SHARED_HANDLERS
  98. // 缩略图的支持
  99. void CDmsDoc::OnDrawThumbnail(CDC& dc, LPRECT lprcBounds)
  100. {
  101. // 修改此代码以绘制文档数据
  102. dc.FillSolidRect(lprcBounds, RGB(255, 255, 255));
  103. CString strText = _T("数字化测量系统");
  104. LOGFONT lf;
  105. CFont* pDefaultGUIFont = CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT));
  106. pDefaultGUIFont->GetLogFont(&lf);
  107. lf.lfHeight = 36;
  108. CFont fontDraw;
  109. fontDraw.CreateFontIndirect(&lf);
  110. CFont* pOldFont = dc.SelectObject(&fontDraw);
  111. dc.DrawText(strText, lprcBounds, DT_CENTER | DT_WORDBREAK);
  112. dc.SelectObject(pOldFont);
  113. }
  114. // 搜索处理程序的支持
  115. void CDmsDoc::InitializeSearchContent()
  116. {
  117. CString strSearchContent;
  118. // 从文档数据设置搜索内容。
  119. // 内容部分应由“;”分隔
  120. // 例如: strSearchContent = _T("point;rectangle;circle;ole object;");
  121. SetSearchContent(strSearchContent);
  122. }
  123. void CDmsDoc::SetSearchContent(const CString& value)
  124. {
  125. if (value.IsEmpty())
  126. {
  127. RemoveChunk(PKEY_Search_Contents.fmtid, PKEY_Search_Contents.pid);
  128. }
  129. else
  130. {
  131. CMFCFilterChunkValueImpl *pChunk = nullptr;
  132. ATLTRY(pChunk = new CMFCFilterChunkValueImpl);
  133. if (pChunk != nullptr)
  134. {
  135. pChunk->SetTextValue(PKEY_Search_Contents, value, CHUNK_TEXT);
  136. SetChunkValue(pChunk);
  137. }
  138. }
  139. }
  140. #endif // SHARED_HANDLERS
  141. // CDmsDoc 诊断
  142. #ifdef _DEBUG
  143. void CDmsDoc::AssertValid() const
  144. {
  145. CDocument::AssertValid();
  146. }
  147. void CDmsDoc::Dump(CDumpContext& dc) const
  148. {
  149. CDocument::Dump(dc);
  150. }
  151. #endif //_DEBUG
  152. // CDmsDoc 命令
  153. void CDmsDoc::SetTitle(LPCTSTR lpszTitle)
  154. {
  155. // TODO: 在此添加专用代码和/或调用基类
  156. CDocument::SetTitle(_T(""));
  157. }