第6章 文本实例(1)
c++中的文本实例
第六章 文本实例(1)主讲教师:贾澎涛 pengtao.jia@http://doc.guandang.net
c++中的文本实例
编写一个具有实用功能的字处理软件本篇经典1. 2. 3.
4. 5. 6. 7.
文档和视图是怎样联系起来的? 如何为程序添加查找、替换等功能? 为什么在某些程序新创建的菜单中只输入了一个 菜单ID标识就可以实现某一种功能? 为什么在应用程序的菜单中有的菜单是灰的? 怎样为程序添加一个浮动菜单? 如何在“帮助\关于…”对话框中添加系统信息? 怎样为应用程序做一个每日提示(在程序启动时 显示)?
c++中的文本实例
8. 如何动态修改菜单? 9. 怎样为应用程序增加一个日历? 10. 如何使EditSoft应用程序成为多文档程序? 11. 怎样修改应用程序标题栏上的显示文字? 12. 怎样使应用程序以最大化窗口显示? 13. 怎样在应用程序的状态条上显示时间? 14. 如何使应用程序窗口左上角标题栏上的应用程序 图标动起来? 15. 怎样使应用程序支持拖放功能? 16. 怎样建立一个文件打开、保存对话框?
c++中的文本实例
17. 18. 19. 20. 21. 22. 23. 24.
如何使用字体、颜色对话框? 如何处理文字输入? 如何在字处理编辑器中增加一个插入符? 如何使应用程序窗口滚动? 如何处理方向键、翻页键等虚键操作? 如何实现字符串的复制、粘贴? 如何为文档增加打印功能? 如何实现应用程序数据的读出和写入?
c++中的文本实例
6.1 程序创建过程(1)用AppWizard新建一个项目,EditSoft。 (2)在第1步选择单文档类型。 (3)在应用程序生成向导的第2、3步选择保留缺省值。 (4)在第4步改扩展名(通过选择高级选项,你可以用 AppWizard设定支持的文本文档的扩展名为TXT)。 (5)第5步选择保留缺省值. (6)MFC AppWizard-Step 6是生成EditSoft应用程序 的关键,在应用程序新生成的类的列表框中选择视图 类(CEditSoftView),在基类名(Base Class)下拉列表 框选择CEditView类,其与保留缺省值。 (7)选择完成,编译连接并执行EditSoft程序。
c++中的文本实例
1.文档和视图是怎样联系起来的?在文档/视图结构的应用程序中,文档类和视图类 常常需要进行相互之间数据的交换和引用,这就需要 采用一种办法实现两者见数据的通信。视图对象通常 只有一个与之相联系的文档对象,利用它所包含的成 员函数GetDocument()函数可以在视图类中得到与之相 联系的文档。在几乎所有视图类的显示函数 OnDraw(CDC* pDC)中,都有一个指向文档类的指针。 利用它我们就可以对文档类的成员函数以及公共数据 成员进行访问。
c++中的文本实例
打开EditSoft应用程序的视图类CEditSoftView的 实现文件“EditSoftView.cpp”,找到以下代码:void CEditSoftView::OnDraw(CDC* pDC) { CEditSoftDoc* pDoc = GetDocument(); //获取文档数据 ASSERT_VALID(pDoc); // TODO: add draw code for native data here } //
CView::GetDocument CDocument* GetDocument( ) const; Call this function to get a pointer to the view’s document. This allows you to call the document’s member functions.
c++中的文本实例
同样在应用程序的文档类CDocument中也有一 个UpdateAllViews()成员函数,用来向视图类传 递消息。一旦文档数据发生了变化,所有与该 文档相关联的视图都通过此函数取得通知,对 其所显示的的数据进行更新。//CDocument::UpdateAllViews void UpdateAllViews( CView* pSender, LPARAM lHint = 0L, CObject* pHint = NULL ); Call this function after the document has been modified.
c++中的文本实例
2.如何为程序添加查找、替换等功能?添加查找功能 (1)打开ResourceView,打开IDR_MAINFRAME; (2)为“编辑”菜单添加“查找”菜单项,并将ID设为 “ID_EDIT_FIND”,注意提示(prompt)编辑框的变化。 (3)编译、连接运行。 添加替换功能 (1)打开ResourceView,打开IDR_MAINFRAME; (2)为“编辑”菜单添加“替换”菜单项,并将ID设为 “ID_EDIT_REPLACE”,注意提示(prompt)编辑框和标 题框的变化。 (3)编译、连接运行。
c++中的文本实例
练习
按照上述办法在“编辑”菜单下加入以下菜 单:菜单名 功能
ID标识
ID_EDIT_CLEARID_EDIT_CLEAR_ALL ID_EDIT_REPEAT ID_EDIT_REDO
删除全部删除 重复 恢复
删除选定的内容删除应用程序中所有的内容 重复上一步操作 恢复上一步操作 选择应用程序中的所有内容
ID_EDIT_SELECT_ALL 全部选择
c++中的文本实例
3.为什么在某些程序新创建的菜单中只输入 了一个菜单ID标识就可以实现某一种功能?
在前面我们为EditSoft应用程序所增加的任何功 能都只在资源编辑中添加了菜单ID标识,而没 有添加任何执行代码,但应用程序的每一个菜 单仍然具有应有的功能。为什么呢? MFC定义的消息进程继承类似于类的继承树。 如果一个类没有提供某个特殊消息的消息处理 函数,则消息通过树传到父类,进程持续下去 直至消息映射所有的基类都被搜索一遍。如果 没有一个类处理该消息,它就由缺省进程处理。
c++中的文本实例
在EditSoft应用程序中,由于其视图类是从CEditView 基类继承而来,在类CEditView中已经对诸如“查找”、 “替换”等功能进行了处理。即使在CEditSoftView中 没有对这些功能进行处理,所定义的ID标识仍将使 MFC追溯到其基类CEditView和CView的消息处理函数, 由基类的处理函数代为响应。 MFC为进一步扩展其重复使用性,它为大多数 Windows应用程序中的应用很广的命令提供了缺省操 作,大多数缺省操作的命令同时也被包含在由 AppWizard产生的缺省菜单中。 以下是在MFC中有缺省操作的菜单命令:
c++中的文本实例
文件菜单:New, Open, Close, Save, Page Setup, Print, Print Preview, Exit等; 编辑菜单:Clear,Clear All, Copy, Cut, Find, Paste, Repeat, Replace, Undo, Redo
等。 视图菜单:Toolbar,Statusbar等 窗口菜单:Arrange Casecade, Tile, Horizontal tile, Vertical tile等; 帮助菜单:Index, Using, Help, About等。
c++中的文本实例
4.为什么在应用程序的菜单中有的
菜单是灰的?
命令更新机制:在程序显示一个菜单前,先检查该菜单的所有条件,再决定如何显示该菜单。
ON_UPDATE_COMMAND_UI 宏:负责将用 户界面元素和命令更新程序连接起来。 CCmdUI(参看MSDN)
c++中的文本实例
5.怎样为程序添加一个浮动菜单?
方法一 (1)在资源编辑器中编辑一个菜单资源,使用缺 省的也可。 (2)打开ClassWizard,为一个窗口类或其派生 类添加消息“WM_CONTEXTMENU”。 (3)在系统生成的消息处理函数中添加如下代码:
c++中的文本实例
CMenu *pFileMenu=GetMenu()->GetSubMenu(2); ClientToScreen(&point); pFileMenu->TrackPopupMenu (TPM_CENTERALIGN|TPM_LEFTBUTTON,point.x,poi nt.y,this) ;
…… 此处隐藏:1945字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




