MyEditerDoc.cpp
资源名称:edit.rar [点击查看]
上传用户:icamtech05
上传日期:2020-11-24
资源大小:10883k
文件大小:3k
源码类别:
编辑框
开发平台:
Visual C++
- // MyEditerDoc.cpp : CMyEditerDoc 类的实现
- //
- #include "stdafx.h"
- #include "MyEditer.h"
- #include "MyEditerDoc.h"
- #include "CntrItem.h"
- #include <string.h>
- #include <fstream>
- #include <string>
- using namespace std;
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
- // CMyEditerDoc
- IMPLEMENT_DYNCREATE(CMyEditerDoc, CRichEditDoc)
- BEGIN_MESSAGE_MAP(CMyEditerDoc, CRichEditDoc)
- // 启用默认的 OLE 容器实现
- ON_UPDATE_COMMAND_UI(ID_OLE_EDIT_LINKS, &CRichEditDoc::OnUpdateEditLinksMenu)
- ON_COMMAND(ID_OLE_EDIT_LINKS, &CRichEditDoc::OnEditLinks)
- ON_UPDATE_COMMAND_UI_RANGE(ID_OLE_VERB_FIRST, ID_OLE_VERB_LAST, &CRichEditDoc::OnUpdateObjectVerbMenu)
- END_MESSAGE_MAP()
- // CMyEditerDoc 构造/析构
- CMyEditerDoc::CMyEditerDoc()
- {
- // TODO: 在此添加一次性构造代码
- }
- CMyEditerDoc::~CMyEditerDoc()
- {
- }
- BOOL CMyEditerDoc::OnNewDocument()
- {
- if (!CRichEditDoc::OnNewDocument())
- return FALSE;
- // TODO: 在此添加重新初始化代码
- // (SDI 文档将重用该文档)
- return TRUE;
- }
- CRichEditCntrItem* CMyEditerDoc::CreateClientItem(REOBJECT* preo) const
- {
- return new CMyEditerCntrItem(preo, const_cast<CMyEditerDoc*>(this));
- }
- // CMyEditerDoc 序列化
- void CMyEditerDoc::Serialize(CArchive& ar)
- {
- CString str;
- if (ar.IsStoring())
- {
- // TODO: 在此添加存储代码
- int nLines = (int)strArr.GetSize();
- for ( int i=0; i<nLines; i++ )
- {
- str = strArr.GetAt( i );
- ar.WriteString( str ); // 将字符串集合类对象中文本保存到硬盘
- }
- }
- else
- {
- // TODO: 在此添加加载代码
- while ( ar.ReadString( str ) )
- {
- strArr.Add( str ); // 将行文本添加到字符串集合类对象中
- }
- }
- // 调用基类 CRichEditDoc 将启用
- // 容器文档的 COleClientItem 对象的序列化。
- // TODO: 如果作为文本进行序列化,则设置 CRichEditDoc::m_bRTF = FALSE
- CRichEditDoc::m_bRTF = FALSE;
- CRichEditDoc::Serialize(ar);
- }
- // CMyEditerDoc 诊断
- #ifdef _DEBUG
- void CMyEditerDoc::AssertValid() const
- {
- CRichEditDoc::AssertValid();
- }
- void CMyEditerDoc::Dump(CDumpContext& dc) const
- {
- CRichEditDoc::Dump(dc);
- }
- #endif //_DEBUG
- // CMyEditerDoc 命令
- void CMyEditerDoc::DeleteContents()
- {
- // TODO: 在此添加专用代码和/或调用基类
- strArr.RemoveAll();
- CRichEditDoc::DeleteContents();
- }
- BOOL CMyEditerDoc::OnOpenDocument(LPCTSTR lpszPathName)
- {
- if (!CRichEditDoc::OnOpenDocument(lpszPathName))
- return FALSE;
- // TODO: 在此添加您专用的创建代码
- ifstream in(lpszPathName);
- if (!in)
- {
- return false;
- }
- char * str = new char[10000];
- CString res("");
- while( in.getline(str, 9000) )
- {
- res += str;
- res += "rn";
- }
- delete []str;
- CRichEditView *pView = GetView();
- pView->SetWindowTextW(res);
- return TRUE;
- }