首页计算机计算机软件VisualC++ 07 第7章 文档视图结构.pptx

07 第7章 文档视图结构.pptx

页数:35页文件大小:233.4 KB来源: VisualC++ppt课件

本课件对应课程第7章文档/视图结构,先说明数据管理与显示分离的框架思想以及应用程序对象、框架窗口、文档与视图四类对象的职责,随后以鼠标绘图程序为例讲解菜单与工具栏资源设计、ON_COMMAND与界面状态更新类消息映射宏的用法,再系统列出CFile类的打开、读写、定位、重命名与删除等成员函数,以及CFileDialog文件对话框的构造与路径获取,最后给出学生信息与数据采集两个编程实例。

第7章文档视图结构教学重点页,聚焦MFC程序框架、菜单工具栏资源设计与CFile文件操作
MFC AppWizard支持的应用程序类型页,列出单文档、多文档与基于对话框三类
文档视图结构基本概念页,指出数据管理与显示分开并给出四类核心对象
查看本课件的文字版(共 35 页,供检索与复制)

第1页:第7章教学重点

  • 教学重点1
  • 基于文档/视图结构的MFC程序框架2
  • MFC菜单
  • 工具栏等资源设计Class Wizard消息映射功能ON_COMMAND消息映射宏3
  • MFC文件操作类CFile,CFileDialog

第2页:AppWizard程序类型

7.1概述MFC AppWizard支持的应用程序类型
1、单文档界面(SDI)2、多文档界面(MDI)3、基于对话框的应用程序

第3页:文档视图基本概念

7.1概述基本概念:数据管理和显示分开基本结构:应用程序对象(CWinApp)+框架窗口对象(CFrameWnd)+文档对象(CDocument)+视图对象(CView)

第4页:应用程序对象CWinApp

7.1概述1、应用程序对象---CWinApp派生类InitInstance()(1)应用程序的初始化;

  • 保持文档、视图和框架窗口之间的关系;
  • 接收Windows消息,进行消息的调度;

第5页:框架窗口对象

7.1概述2、框架窗口对象---

CFrameWnd派生类OnCreate()(1)提供应用程序主窗口; (2)工具栏、状态栏的创建、初始化和销毁;

第6页:文档与视图对象

7.1概述3、文档对象:CDocument的派生类Serialize()(1)管理和维护数据,串行化功能;

  • 处理WM_COMMAND消息;
  • 视图对象:CView,etc的派生类OnDraw()(1)文档和用户的中介;
  • 读取文档中的数据,显示到屏幕上;

第7页:WM_COMMAND消息处理

7.1概述---WM_COMMAND消息处理当用户选择了菜单项,单击了快捷键或工具条按钮,系统就会发送命令消息。 框架窗口实际上是大多数命令消息的接受者,但命令消息还可以在视图、文档,甚至应用程序类中被处理。

注意
Windows消息和控件通知消息只能由窗口和视图处理。

第8页:例7.1设计实例

7.1概述---设计实例【例7.1】创建一个鼠标绘图程序,可以绘制矩形、椭圆和线段。

设计要求:

  • 点击菜单或者工具栏按钮,选中需要绘制的图形。
  • 拖动鼠标绘制图形。
  • 实现数据保存功能,程序可将图形数据保存到文件。
  • 程序能够从数据文件中读取数据绘制图形。

第9页:例7.1运行效果

7.1概述---设计实例

本页源文件仅提取到标题或少量文字,详细内容请对照本页图示。

第10页:例7.1设计方案

  • 7.1概述---设计实例【例7.1】设计方案1菜单设计:保存文件
  • 打开文件
  • 绘图类型
2工具栏设计
线段、矩形和椭圆;
3鼠标消息处理
图形绘制;

4 MFC文件操作,数据文件格式设计。

第11页:MFC菜单设计

7.2 MFC菜单设计【例7.1】创建一个基于单文档结构的鼠标绘图程序。 建立包含“打开文件”、“保存文件”和“图形类型”三个菜单项的“绘图”菜单。 菜单项“打开文件”用来从图形数据文件读取图形数据,菜单项“保存文件”用来将当前屏幕上面的图形数据保存到文件,“图形类型”中包含一个级连菜单,内容为“线段”、“矩形”和“椭圆”三个菜单项。

第12页:ON_COMMAND消息映射

7.2 MFC菜单设计---消息映射1、ON_COMMAND消息映射宏语法:ON_COMMAND(ID, func)说明:处理WM_COMMAND消息。 参数:(1) ID:WM_COMMAND消息附带的控件ID;

(2) func:消息处理函数,原型为:void func(void);

第13页:ON_UPDATE_COMMAND_UI

7.2 MFC菜单设计---消息映射2、ON_UPDATE_COMMAND_UI语法:ON_UPDATE_COMMAND_UI (ID,func)说明:处理MFC请求,用于更新界面状态。 参数:(1)ID是控件ID;

(2)func是消息处理函数,原型为:void func(CcmdUI* pCmdUI); UPDATE_COMMAND_UI消息是在窗口将要绘制菜单项的时候产生。

第14页:CCmdUI成员函数

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)设置菜单项的Caption属性void SetText( LPCTSTR lpszText );

第15页:ON_COMMAND_RANGE宏

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消息的自动映射,只能手工添加消息的处理。

第16页:界面状态批量更新宏

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);

第17页:CFile构造函数

7.3 MFC文件操作--

CFile类1、构造函数CFile( ); CFile( LPCTSTR lpszFileName,UINT nOpenFlags ); <参数1>lpszFileName文件路径<参数2>nOpenFlags共享和访问模式

第18页:CFile::Open

7.3 MFC文件操作--CFile类2、CFile::OpenCFile::Open和CFile::CFile( )配合使用。

virtual BOOL Open(LPCTSTR lpszFileName,UINTnOpenFlags); <参数1>lpszFileName文件路径<参数2>nOpenFlags共享和访问模式

第19页:打开模式(一)

7.3 MFC文件操作--CFile类CFile::Open---nOpenFlagsCFile::modeCreate创建新文件,如果指定的文件已存在,则清空文件内容。 CFile::modeNoTruncate与modeCreate组合使用。 如果打开已经存在的文件,不清空文件内容。 CFile::modeRead只读方式CFile::modeReadWrite可读可写方式

第20页:打开模式(二)

7.3 MFC文件操作--CFile类CFile::Open---nOpenFlagsCFile::modeWrite只写方式CFile::shareDenyNone共享方式CFile::shareDenyRead打开文件后,拒绝其他进程读取该文件CFile::shareDenyWrite打开文件后,拒绝其他进程写入该文件CFile::shareExclusive打开文件后,拒绝其他进程读、写该文件

第21页:Close与Read函数

7.3 MFC文件操作--

CFile类3、CFile::Closevirtual void Close( ); 4、CFile::Readvirtual UINT Read( void* lpBuf,UINT nCount ); <参数1>lpBuf接收数据的缓冲区地址<参数2>nCount最大读取字节数

第22页:CFile::Write

7.3 MFC文件操作--

CFile类5、CFile::Writevirtual void Write( const void* lpBuf,UINT nCount ); <参数1>lpBuf写入数据缓冲区地址<参数2>nCount数据字节数

第23页:CFile::Seek

7.3 MFC文件操作--

CFile类6、CFile::Seek功能:文件指针定位virtual LONG Seek( LONG lOff, UINT nFrom ); <参数1>lOff指针移动字节数<参数2>nFrom指针移动模式CFile::begin指针相对文件头移动lOff个字节CFile::current指针相对当前位置移动lOff个字节CFile::end指针相对文件尾移动lOff个字节

第24页:文件指针与长度函数

7.3 MFC文件操作--

CFile类7、CFile::SeekToBeginvoid SeekToBegin( ); 8、CFile::SeekToEndDWORD SeekToEnd( ); 9、CFile::GetLengthvirtual DWORD GetLength( ) const; 10、CFile::SetLengthvirtual void SetLength( DWORD dwNewLen );

第25页:CFile::Rename

7.3 MFC文件操作--

CFile类11、CFile::Rename功能:重新命名文件static void PASCAL Rename(LPCTSTR lpszOldName,LPCTSTR lpszNewName ); <参数1>lpszOldName原文件名<参数2>lpszNewName新文件名

第26页:CFile::Remove

7.3 MFC文件操作--

CFile类12、CFile::Remove功能:删除文件static void PASCAL Remove(LPCTSTR lpszFileName ); <参数1>lpszFileName文件路径

第27页:CFileDialog构造函数

7.3 MFC文件操作--

CFileDialog类1、构造函数CFileDialog( BOOL bOpenFileDialog,LPCTSTR lpszDefExt = NULL,LPCTSTR lpszFileName = NULL,DWORD dwFlags = OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter = NULL,CWnd* pParentWnd = NULL);

第28页:文件对话框参数(一)

7.3 MFC文件操作--CFileDialog类< 参数1> bOpenFileDialogTRUE文件打开对话框; FALSE文件保存对话框< 参数2> lpszDefExt缺省文件扩展名< 参数3> lpszFileName出现在文件名编辑框中的初始值< 参数4> dwFlags允许用户定制对话框的标志组合

第29页:文件对话框参数(二)

7.3 MFC文件操作--CFileDialog类< 参数5>

lpszFilter文件类型过滤器static char BASED_CODE szFilter[] ="Worksheet Files (*.xls)|*.xls| All Files (*.*)|*.*||"; <参数6>pParentWnd父窗口指针

第30页:DoModal与GetPathName

7.3 MFC文件操作--

CFileDialog类2显示对话框virtual int DoModal( ); 返回值:IDOK、IDCANCEL表示用户选择了OK或者Cancel按钮。3获取文件路径名CString GetPathName( ) const; "C:\FILES\TEXT.DAT"

第31页:获取文件名与扩展名

7.3 MFC文件操作--

CFileDialog类4、获取文件名CString GetFileName( ) const; 返回文件名,如文件C:\FILES\TEXT.DAT,返回的字符串为"TEXT.DAT"。5、获取文件扩展名CString GetFileExt( ) const;

第32页:例7.2学生信息程序

7.4 MFC编程举例【例7.2】创建一个存储和显示学生信息的单文档应用程序。

本页源文件仅提取到标题或少量文字,详细内容请对照本页图示。

第33页:例7.2程序功能

7.4 MFC编程举例【例7.2】程序功能如下
1、单击“录入”按钮,将输入的内容存储到文档类中的一个学生信息类数组。
  • 单击“查询”按钮,根据输入的学号查询学生信息并显示在编辑框中。
  • 实现文件读写功能,将学生信息保存到文件中,需要时打开文件将信息读入程序。

第34页:例7.3数据采集程序

7.4 MFC编程举例【例7.3】创建一个数据采集模拟程序。

程序功能如下
点击“启动采集”菜单命令,系统生成数据,并在屏幕上实时显示,点击“停止采集”可以终止实时数据的显示。

实时数据显示100个数据点,数据点多于100个时,实现滚动显示。 实现数据保存功能,程序可保留采集过程数据到指定的数据文件。 程序能够从数据文件中读取数据显示历史数据记录。

第35页:例7.3设计方案

7.4 MFC编程举例【例7.3】设计方案图形输出设计
视图显示动态曲线;
定时器
控制采集的启动、停止;
采集模式
随即生成数据,可根据用户选项进行数据保存;
演示模式
从数据记录文件读取数据,重演采集过程;

使用菜单命令控制系统状态。

顶部目录