MyEditerDoc.cpp
上传用户:icamtech05
上传日期:2020-11-24
资源大小:10883k
文件大小:3k
源码类别:

编辑框

开发平台:

Visual C++

  1. // MyEditerDoc.cpp : CMyEditerDoc 类的实现
  2. //
  3. #include "stdafx.h"
  4. #include "MyEditer.h"
  5. #include "MyEditerDoc.h"
  6. #include "CntrItem.h"
  7. #include <string.h>
  8. #include <fstream>
  9. #include <string>
  10. using namespace std;
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #endif
  14. // CMyEditerDoc
  15. IMPLEMENT_DYNCREATE(CMyEditerDoc, CRichEditDoc)
  16. BEGIN_MESSAGE_MAP(CMyEditerDoc, CRichEditDoc)
  17. // 启用默认的 OLE 容器实现
  18. ON_UPDATE_COMMAND_UI(ID_OLE_EDIT_LINKS, &CRichEditDoc::OnUpdateEditLinksMenu)
  19. ON_COMMAND(ID_OLE_EDIT_LINKS, &CRichEditDoc::OnEditLinks)
  20. ON_UPDATE_COMMAND_UI_RANGE(ID_OLE_VERB_FIRST, ID_OLE_VERB_LAST, &CRichEditDoc::OnUpdateObjectVerbMenu)
  21. END_MESSAGE_MAP()
  22. // CMyEditerDoc 构造/析构
  23. CMyEditerDoc::CMyEditerDoc()
  24. {
  25. // TODO: 在此添加一次性构造代码
  26. }
  27. CMyEditerDoc::~CMyEditerDoc()
  28. {
  29. }
  30. BOOL CMyEditerDoc::OnNewDocument()
  31. {
  32. if (!CRichEditDoc::OnNewDocument())
  33. return FALSE;
  34. // TODO: 在此添加重新初始化代码
  35. // (SDI 文档将重用该文档)
  36. return TRUE;
  37. }
  38. CRichEditCntrItem* CMyEditerDoc::CreateClientItem(REOBJECT* preo) const
  39. {
  40. return new CMyEditerCntrItem(preo, const_cast<CMyEditerDoc*>(this));
  41. }
  42. // CMyEditerDoc 序列化
  43. void CMyEditerDoc::Serialize(CArchive& ar)
  44. {
  45. CString str;
  46. if (ar.IsStoring())
  47. {
  48. // TODO: 在此添加存储代码
  49. int nLines = (int)strArr.GetSize();
  50. for ( int i=0; i<nLines; i++ ) 
  51. {
  52. str = strArr.GetAt( i );
  53. ar.WriteString( str ); // 将字符串集合类对象中文本保存到硬盘
  54. }
  55. }
  56. else
  57. {
  58. // TODO: 在此添加加载代码
  59. while ( ar.ReadString( str ) )
  60. {
  61. strArr.Add( str ); // 将行文本添加到字符串集合类对象中
  62. }
  63. }
  64. // 调用基类 CRichEditDoc 将启用
  65. //  容器文档的 COleClientItem 对象的序列化。
  66. // TODO: 如果作为文本进行序列化,则设置 CRichEditDoc::m_bRTF = FALSE
  67. CRichEditDoc::m_bRTF = FALSE;
  68. CRichEditDoc::Serialize(ar);
  69. }
  70. // CMyEditerDoc 诊断
  71. #ifdef _DEBUG
  72. void CMyEditerDoc::AssertValid() const
  73. {
  74. CRichEditDoc::AssertValid();
  75. }
  76. void CMyEditerDoc::Dump(CDumpContext& dc) const
  77. {
  78. CRichEditDoc::Dump(dc);
  79. }
  80. #endif //_DEBUG
  81. // CMyEditerDoc 命令
  82. void CMyEditerDoc::DeleteContents()
  83. {
  84. // TODO: 在此添加专用代码和/或调用基类
  85. strArr.RemoveAll();
  86. CRichEditDoc::DeleteContents();
  87. }
  88. BOOL CMyEditerDoc::OnOpenDocument(LPCTSTR lpszPathName)
  89. {
  90. if (!CRichEditDoc::OnOpenDocument(lpszPathName))
  91. return FALSE;
  92. // TODO:  在此添加您专用的创建代码
  93. ifstream in(lpszPathName);
  94. if (!in) 
  95. {
  96. return false;
  97. }
  98. char * str = new char[10000];
  99. CString res("");
  100. while( in.getline(str, 9000) )
  101. {
  102. res += str;
  103. res += "rn";
  104. }
  105. delete []str;
  106. CRichEditView *pView =  GetView();
  107. pView->SetWindowTextW(res);
  108. return TRUE;
  109. }