




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、教学重点1、基于文档/视图结构的MFC程序框架2、MFC菜单、工具栏等资源设计 Class Wizard消息映射功能 ON_COMMAND消息映射宏3、MFC文件操作类 CFile,CFileDialog 第7章 文档/视图结构 7.1 概述 MFC AppWizard支持的应用程序类型:1、单文档界面(SDI)2、多文档界面(MDI)3、基于对话框的应用程序第7章 文档/视图结构 7.1 概述基本概念:数据管理和显示分开基本结构: 应用程序对象(CWinApp) +框架窗口对象(CFrameWnd) +文档对象(CDocument) +视图对象(CView) 第7章 文档/视图结构 7.1
2、概述 1、应用程序对象-CWinApp派生类 InitInstance()(1)应用程序的初始化;(2)保持文档、视图和框架窗口之间的关系;(3)接收Windows消息,进行消息的调度;第7章 文档/视图结构 7.1 概述 2、框架窗口对象-CFrameWnd派生类 OnCreate()(1)提供应用程序主窗口;(2)工具栏、状态栏的创建、初始化和销毁; 第7章 文档/视图结构 7.1 概述 3、文档对象:CDocument的派生类 Serialize()(1)管理和维护数据,串行化功能;(2)处理WM_COMMAND消息;4、视图对象:CView,etc的派生类 OnDraw()(1)文档和
3、用户的中介;(2)读取文档中的数据,显示到屏幕上;第7章 文档/视图结构 7.1 概述- WM_COMMAND消息处理当用户选择了菜单项,单击了快捷键或工具条按钮,系统就会发送命令消息。框架窗口实际上是大多数命令消息的接受者,但命令消息还可以在视图、文档,甚至应用程序类中被处理。注意:Windows消息和控件通知消息只能由窗口和视图处理。 第7章 文档/视图结构 7.1 概述-设计实例【例7.1】创建一个鼠标绘图程序,可以绘制矩形、椭圆和线段。设计要求: (1)点击菜单或者工具栏按钮,选中需要绘制的图形。 (2)拖动鼠标绘制图形。 (3)实现数据保存功能,程序可将图形数据保存到文件。 (4)程
4、序能够从数据文件中读取数据绘制图形。 第7章 文档/视图结构 7.1 概述-设计实例 第7章 文档/视图结构 7.1 概述-设计实例【例7.1】设计方案1 菜单设计:保存文件、打开文件、绘图类型;2 工具栏设计:线段、矩形和椭圆;3 鼠标消息处理:图形绘制;4 MFC文件操作,数据文件格式设计。第7章 文档/视图结构 7.2 MFC菜单设计【例7.1】 创建一个基于单文档结构的鼠标绘图程序。建立包含“打开文件”、“保存文件”和“图形类型”三个菜单项的“绘图”菜单。菜单项“打开文件”用来从图形数据文件读取图形数据,菜单项“保存文件”用来将当前屏幕上面的图形数据保存到文件,“图形类型”中包含一个级
5、连菜单,内容为“线段”、“矩形”和“椭圆”三个菜单项。 第7章 文档/视图结构 7.2 MFC菜单设计-消息映射1、ON_COMMAND消息映射宏语法:ON_COMMAND(ID, func)说明:处理WM_COMMAND消息。参数: (1) ID:WM_COMMAND消息附带的控件ID; (2) func:消息处理函数,原型为: void func(void); 第7章 文档/视图结构 7.2 MFC菜单设计-消息映射2、ON_UPDATE_COMMAND_UI语法:ON_UPDATE_COMMAND_UI (ID,func)说明:处理MFC请求,用于更新界面状态。参数: (1)ID是控件I
6、D; (2)func是消息处理函数,原型为: void func(CcmdUI* pCmdUI); UPDATE_COMMAND_UI消息是在窗口将要绘制菜单项的时候产生。第7章 文档/视图结构 7.2 MFC菜单设计- CCmdUI(1) 禁止或者允许该菜单项 void Enable( BOOL bOn = TRUE );(2)设置菜单项/工具条按钮的check状态,显示标志为“” void SetCheck( int nCheck = 1 );(3)与SetCheck功能类似,显示标志为“” void SetRadio( BOOL bOn = TRUE );(4) 设置菜单项的Captio
7、n属性 void SetText( LPCTSTR lpszText );第7章 文档/视图结构 7.2 MFC菜单设计-消息映射3、ON_COMMAND_RANGE语法:ON_COMMAND_RANGE (IDFirst,IDLast,func)说明:处理一个ID范围内的WM_COMMAND消息。参数: (1)IDFirst是范围内第一个控件ID; (2)IDLast是范围内最后一个控件ID; (3)func是消息处理函数,原型为: void func(WORD id);ClassWizard不支持ON_COMMAND_RANGE消息的自动映射,只能手工添加消息的处理。第7章 文档/视图结构
8、 7.2 MFC菜单设计-消息映射4、ON_UPDATE_COMMAND_UI_RANGE语法:ON_UPDATE_COMMAND_UI_RANGE ( IDFirst, IDLast,func)说明:处理MFC请求,用于更新界面状态。参数: (1)IDFirst是范围内第一个控件ID; (2)IDLast是范围内最后一个控件ID; (3)func是消息处理函数,原型为: void func(CcmdUI* pCmdUI); 第7章 文档/视图结构 7.3 MFC文件操作-CFile类1、构造函数CFile( );CFile( LPCTSTR lpszFileName, UINT nOpenF
9、lags ); lpszFileName 文件路径 nOpenFlags 共享和访问模式 第7章 文档/视图结构 7.3 MFC文件操作-CFile类2、CFile:OpenCFile:Open和CFile:CFile( )配合使用。virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags); lpszFileName 文件路径 nOpenFlags 共享和访问模式 第7章 文档/视图结构 7.3 MFC文件操作-CFile类CFile:Open- nOpenFlagsCFile:modeCreate创建新文件,如果指定的文件已存在,则清
10、空文件内容。CFile:modeNoTruncate与modeCreate组合使用。如果打开已经存在的文件,不清空文件内容。CFile:modeRead只读方式CFile:modeReadWrite可读可写方式第7章 文档/视图结构 7.3 MFC文件操作-CFile类CFile:Open- nOpenFlagsCFile:modeWrite只写方式CFile:shareDenyNone共享方式CFile:shareDenyRead打开文件后,拒绝其他进程读取该文件CFile:shareDenyWrite打开文件后,拒绝其他进程写入该文件CFile:shareExclusive 打开文件后,拒
11、绝其他进程读、写该文件 第7章 文档/视图结构 7.3 MFC文件操作-CFile类3、CFile:Close virtual void Close( );4、CFile:Readvirtual UINT Read( void* lpBuf, UINT nCount ); lpBuf 接收数据的缓冲区地址 nCount 最大读取字节数 第7章 文档/视图结构 7.3 MFC文件操作-CFile类5、CFile:Write virtual void Write( const void* lpBuf, UINT nCount ); lpBuf 写入数据缓冲区地址 nCount 数据字节数第7章 文
12、档/视图结构 7.3 MFC文件操作-CFile类6、CFile:Seek功能:文件指针定位virtual LONG Seek( LONG lOff, UINT nFrom ); lOff 指针移动字节数 nFrom 指针移动模式CFile:begin指针相对文件头移动lOff个字节CFile:current指针相对当前位置移动lOff个字节CFile:end指针相对文件尾移动lOff个字节第7章 文档/视图结构 7.3 MFC文件操作-CFile类7、CFile:SeekToBeginvoid SeekToBegin( );8、CFile:SeekToEndDWORD SeekToEnd(
13、);9、CFile:GetLength virtual DWORD GetLength( ) const;10、CFile:SetLength virtual void SetLength( DWORD dwNewLen ); 第7章 文档/视图结构 7.3 MFC文件操作-CFile类11、CFile:Rename功能:重新命名文件static void PASCAL Rename( LPCTSTR lpszOldName, LPCTSTR lpszNewName ); lpszOldName 原文件名 lpszNewName新文件名 第7章 文档/视图结构 7.3 MFC文件操作-CFil
14、e类12、CFile:Remove功能:删除文件static void PASCAL Remove( LPCTSTR lpszFileName ); lpszFileName 文件路径 第7章 文档/视图结构 7.3 MFC文件操作-CFileDialog类1、构造函数CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter
15、 = NULL, CWnd* pParentWnd = NULL );第7章 文档/视图结构 7.3 MFC文件操作-CFileDialog类 bOpenFileDialog TRUE 文件打开对话框; FALSE 文件保存对话框 lpszDefExt 缺省文件扩展名 lpszFileName 出现在文件名编辑框中的初始值 dwFlags 允许用户定制对话框的标志组合第7章 文档/视图结构 7.3 MFC文件操作-CFileDialog类 lpszFilter 文件类型过滤器static char BASED_CODE szFilter = Worksheet Files (*.xls)|*.
16、xls| All Files (*.*)|*.*|; pParentWnd 父窗口指针第7章 文档/视图结构 7.3 MFC文件操作-CFileDialog类2 显示对话框 virtual int DoModal( ); 返回值:IDOK、 IDCANCEL 表示用户选择了OK 或者 Cancel按钮。3 获取文件路径名CString GetPathName( ) const; C:FILESTEXT.DAT第7章 文档/视图结构 7.3 MFC文件操作-CFileDialog类4、获取文件名 CString GetFileName( ) const;返回文件名,如文件C:FILESTEXT.
17、DAT,返回的字符串为TEXT.DAT。5、获取文件扩展名CString GetFileExt( ) const;第7章 文档/视图结构 7.4 MFC编程举例【例7.2】 创建一个存储和显示学生信息的单文档应用程序。第7章 文档/视图结构 7.4 MFC编程举例【例7.2】程序功能如下: 1、单击“录入”按钮,将输入的内容存储到文档类中的一个学生信息类数组。 2、单击“查询”按钮,根据输入的学号查询学生信息并显示在编辑框中。 3、实现文件读写功能,将学生信息保存到文件中,需要时打开文件将信息读入程序。第7章 文档/视图结构 7.4 MFC编程举例【例7.3】 创建一个数据采集模拟程序。程序功能如下:点击“启动采集”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年后桥法兰轴项目可行性研究报告
- 2025年中国皮卡行业市场评估分析及发展前景调研战略研究报告
- 2025年中国货物运输代理行业市场深度评估及投资战略规划报告
- 2025年中国一次性等离子双极电极行业全景评估及投资规划建议报告
- 2021-2026年中国诊断用血凝素行业市场供需格局及投资规划建议报告
- 2025年中国液压冲击锤市场调查研究报告
- 黄金购买合同范本
- 2025年中国植绒烫金浆市场调查研究报告
- 2025年中国气电式脱皮机市场调查研究报告
- 球员 出售 合同范本
- 雾化吸入技术教学课件
- 上海市宝山区2024-2025学年高三一模英语试卷(含答案)
- 2023年会计基础各章节习题及答案
- 2024年神农架林区林投集团招聘工作人员6名管理单位遴选500模拟题附带答案详解
- 海洋生物的奥秘
- 舞台设计课件教学课件
- 新能源汽车驱动电机及控制系统检修课件 学习情境1:驱动电机的认知
- 2024年采购部年终总结
- 打深水井施工方案
- 企业名称预先核准通知书
- 统筹管理方案
评论
0/150
提交评论