第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字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




