logo资料库

c++简易文本编辑器设计.doc

第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
资料共32页,剩余部分请下载后查看
引 言
1.课程设计目的和意义
2.详细设计
2.1需求描述
2.1.1文件
2.1.2编辑
2.1.3应用
2.1.4帮助
2.1.5高级
2.2功能描述
2.2.1文本编辑区
2.2.2文件
新建
打开
保存
另存为
退出
2.2.3编辑
撤销
删除
剪切
复制
粘贴
全选
2.2.4应用
查找/替换
字体设置
统计字符串
统计字数
2.2.5帮助
关于EasyTXT
帮助
2.2.6高级
关联注册
还原注册
2.2.7菜单栏
2.2.7图标
2.3程序运行说明
文本编辑区:
文件的打开
文件的保存、另存
文本的查找和替换
帮助
文件的关联和解除关联
3.课程设计总结
3.1编程日志
3.3测试报告
4.心得体会
5.参考文献
简易文本编辑器 面向对象程序设计课程设计报告 (2011/2012 学年第二学期) 题目名称 系 部 业 专 班 级 学 生 完成时间 简单文本编辑器的设计 计算机科学与技术 2012 年 6 月 指导老师 1
简易文本编辑器 引 言 在文本编辑器出现前,人们用打孔机把计算机文字打到穿孔卡片上。文字存放于一 个装着这样的薄卡片的盒子里,可以用读卡器来阅读它。 第一个文本编辑器是一种行编辑器,它运行在打字机型的终端上,这种编辑器并不 具备在窗口和屏幕中显示的功能。它包含了一些非常短的命令(为了减少打字量)。其 中一个命令能够把文件的指定部分通过打字机打印出来。编辑光标是想象中的一个插入 点,通过特殊命令,可以把它移动到特定内容字符串所在的行。随后,内容字符串又被 扩展成正则表达式。如果想看到文件的变化,你需要把它打印出来。相对于穿孔机来说, 人们认为这种基于行的文本编辑器具有革命性的进步。如果没有它,用户就需要把那些 处理文本的命令打成专用的卡片,并在编辑文件时使用这些卡片。 当带有显示屏的计算机终端出现后,基于显示屏的文本编辑器开始流行起来。 最早的全屏编辑器中,有一种叫做 O26,它是于 1967 年为 CDC 6000 系列机器的操作控 制台而作的。另外一个早期的全屏编辑器是 vi。vi 诞生于 20 世纪 70 年代,至今,它 仍是 Unix 和 Linux 的标准编辑器。全屏编辑器对视频终端的销售起到了促进的作用。 文本编辑器在 Windows 的应用中是一个非常重要的项目,在过去十数年中,微软对 windows 文本编辑器有多个版本的升级改进,而基于其他的编程环境的文本编辑器也是 多如牛毛,今天我们用 MFC 可视化编译环境做一个简易的文本编辑器。 2
简易文本编辑器 目 录 引 言 ............................................. 2 1.课程设计目的和意义 ................................ 4 2.详细设计 ......................................... 4 2.1 需求描述 ...........................................................4 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 文件 ...................................................................................................................................4 编辑 ...................................................................................................................................4 应用 ...................................................................................................................................5 帮助 ...................................................................................................................................5 高级 ...................................................................................................................................5 2.2 功能描述 ...........................................................5 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.7 文本编辑区.......................................................................................................................5 文件 ...................................................................................................................................7 编辑 .................................................................................................................................15 应用 .................................................................................................................................16 帮助 .................................................................................................................................21 高级 .................................................................................................................................22 菜单栏.............................................................................................................................25 图标 .................................................................................................................................26 2.3 程序运行说明 ......................................................27 3.课程设计总结 .....................................30 3.1 编程日志 ..........................................................30 3.3 测试报告 ..........................................................31 4.心得体会 ........................................ 31 5.参考文献 ........................................ 31 3
简易文本编辑器 1.课程设计目的和意义 《面向对象程序设计》课程设计是实践性教学环节之一,是《面向对象程序设计》 课程的辅助教学课程。该课程设计要求学生综合运用在《面向对象程序设计》课程中学 到的面向对象技术与实际编程相结合,独立完成一项较为完整、并具有一定实际功能的 课程设计任务,同时加深学生对面向对象和 C++编程技术的理解和掌握,培养实际的应 用程序开发能力。在课程设计过程中,使学生养成良好的程序设计风格,并掌握 C++应 用程序的设计开发过程和编程方法、测试方法 2.详细设计 2.1 需求描述 简单文本编辑器的设计是基于Microsoft Visual Studio 2008开发的一款小型的软 件,主要的设计是为了满足普通用户对文本文档进行一般的简单操作,通过MFC可视化编 程环境,直接生成一个友好的用户操作界面,通过这个窗口,用户可以对文本进行如下 的基本操作。 2.1.1 文件 1 新建:创建一篇空白文档,从“工具栏”或“文件下拉菜单”中创建 ② 打开:打开文本(.txt)文件,从“工具栏”或“文件下拉菜单”中打开;或将文 本(.txt)文件拖入程序界面打开或应用程序图标上打开;或右键单击文本文件,在“打 开方式”中选择本程序打开 2 保存:保存文档,从“工具栏”或“文件下拉菜单”中打开 ④ 另存为:保存文件副本,在不同位置或以不同文件名保存文档,从“工具栏”或“文 件下拉菜单”中另存 2.1.2 编辑 ① 撤销:撤销前一步所进行的操作,从“编辑下拉菜单”或“右键菜单”中撤销 3 删除:删除当前选定字符(串),从“编辑下拉菜单”或“右键菜单”中删除 4 剪切:复制并删除选定字符(串),从“编辑下拉菜单”或“右键菜单”中剪切 5 复制:复制选定字符(串),“编辑下拉菜单”或“右键菜单”中复制 6 粘贴:对粘贴内容进行粘贴,从“编辑下拉菜单”或“右键菜单”中粘贴 7 全选:对文本编辑框中文本全部选定,从“编辑下拉菜单”或“右键菜单”中全 4
简易文本编辑器 2.1.3 应用 ① 查找/替换:输入查找内容(和替换内容),可从光标位置逐个查找(或替换)相应 内容,也可一次性全部替换掉相应内容,从“工具栏”或“应用下拉菜单”中执行 ② 字体设置:设置字体、字形及字的大小,从“工具栏”或“应用下拉菜单 ”中 设置字体 ③ 统计字符串:统计用户输入的字符串 出现次数,从“工具栏”或“应用下拉菜 单”中执行 ④ 统计字数:统计所有字符数、中文字符数、英文字符数、数字字符数和空格数,从 “工具栏”或“应用下拉菜单”中启动 2.1.4 帮助 ① 关于EasyTXT:显示关于本程序的信息, 从“帮助下拉菜单”中启动 ② 帮助:显示程序帮助文档,包括程序 功能、使用、简要说明等各种信息,从“工 具栏”或“帮助下拉菜单”中启动 2.1.5 高级 ①关联注册:向注册表添加SLW文件关联,改变文本(.txt)文件图标,并使文本(.txt) 文件可单击右键后选择用本程序打开(部分功能重启或注销后方能生效) ②还原注册:取消注册,文本(.txt)文件还原为默认图标,不能右键打开(部分功能 重启或注销后方能生效) 2.2 功能描述 2.2.1 文本编辑区 本程序的编译框架为MFC,功能的实现使用的是模块化的编程方式进行,由于使用的 是MFC可视化编程,所以其中的很多过程使用的是相关的系统自带函数实现的,其中整 个编辑器的编辑区使用的是MFC自动生成的文本框,但是这个文本框没有插入符,不能 实现文字编辑功能,所以需要在程序的CEasyTXTView中插入一些特定的文本编辑函数, 如插入符函数cwnd::createsolidcreat,这个函数默认的为隐藏,所以在后面需要 showcreate()才能正常显示,而整个编辑器的操作编辑部分使用的是一个独立的*.CPP 进行控制的,代码中使用的是图形至于文本输入的下方并设置为透明,在下面的文本编 辑区下层有一张写有内容的图片作为装饰,换行等动作惠济路插入符位置并按照坐标进 5
简易文本编辑器 行绘制,文本框的大小改变等会导致文本编辑区的重绘,所以在改变文本框时必须调用 函数对文本框中的内容进行保存,相关代码如下所示: BOOL CBmpEdit::OnEraseBkgnd(CDC* pDC) { CDC memDC; memDC.CreateCompatibleDC(pDC);//创建内存设备上下文 memDC.SelectObject(&m_Bitmap);//将位图选入设备上下文 BITMAP m_Bmp; //声明位图控件 m_Bitmap.GetBitmap(&m_Bmp); //获得位图信息 int x = m_Bmp.bmWidth; //获取图片宽度 int y = m_Bmp.bmHeight; //获取图片高度 CRect rect; //声明矩形区域对象 GetClientRect(rect); //获取编辑区大小矩形框 pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,x,y,SRCCOPY); //伸展铺上图片 memDC.DeleteDC();//释放内存设备上下文 return TRUE; //return CEdit::OnEraseBkgnd(pDC); } void CBmpEdit::OnChange() { } Invalidate(); //刷新用户界面 HBRUSH CBmpEdit::CtlColor(CDC* pDC, UINT nCtlColor) { } pDC->SetBkMode(TRANSPARENT); //设置文字背景透明 return NULL; void CBmpEdit::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar * pScrollBar) { } CEdit::OnVScroll(nSBCode, nPos, pScrollBar); //判断滚动条是否滑动 Invalidate(); //刷新用户界面 void CBmpEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { int n1,n2; 6
简易文本编辑器 n1 = GetScrollPos (SB_VERT); CEdit::OnKeyDown(nChar, nRepCnt, nFlags); n2 = GetScrollPos (SB_VERT); if (n1 != n2) //判断滚动条是否滑动 Invalidate(); //刷新用户界面 { } } BOOL CBmpEdit::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) { } BOOL editS = CEdit::OnMouseWheel(nFlags, zDelta, pt); Invalidate(); //刷新用户界面 return editS; 2.2.2 文件 新建 新建菜单使用的是MFC自带的系统函数中的FILE等函数指令在massagebox的功能实 现模块,其中在新建文档的时候需要对文本的编辑区进行判断,对文本框中存在的文本 进行存档,而新建的文档就是对文本编辑区进行重绘,对原有的内容进行存储和销毁, 详细代码如下所示: void CEasyTXTDlg::OnMenuNew() {//新建前对现有文本的的处理 isModified = m_Edit.GetModify();//获取文本修改标记 CString string; m_Edit.GetWindowText(string); if (isNew && string.IsEmpty())//若是新建文本且文本无内容内容 { } ; else if(isModified) //如果文本已被修改,分情况讨论 { int Choice = MessageBox("当前文本已被修改,想保存吗?","系统提示", MB_YESNO|MB_ICONQUESTION); //弹出消息对话框询问 7
简易文本编辑器 if(Choice==IDYES) //选择“是” { } OnMenuSave();//调用保存函数保存文件 }//新建 m_Edit.SetSel(0, -1); //全部选中文本内容 m_Edit.Clear();//将所有文本删除 isNew = TRUE; //标记为新建文本 m_Edit.SetModify(FALSE); //文本修改标记设为未修改 } 打开 菜单栏的打开使用的拖入和图标打开,其中使用了MFC中自带的打开对话框,这样的 使用和拖入的使用均是使用了自带的函数,其中重点是在运行的过程中对绝对路径的获 取以及特定格式文件的打开和提取,对不正确的格式进行massagebox的消息盒子提醒, 详细代码如下: void CEasyTXTDlg::OnDropFiles(HDROP hDropInfo) { char *lpszFileName=new char[512]; int nFileCount,i; nFileCount=::DragQueryFile (hDropInfo,0xFFFFFFFF,NULL,512); for (i=0;i
分享到:
收藏