页数:35页文件大小:233.4 KB来源: VisualC++ppt课件
本课件对应课程第7章文档/视图结构,先说明数据管理与显示分离的框架思想以及应用程序对象、框架窗口、文档与视图四类对象的职责,随后以鼠标绘图程序为例讲解菜单与工具栏资源设计、ON_COMMAND与界面状态更新类消息映射宏的用法,再系统列出CFile类的打开、读写、定位、重命名与删除等成员函数,以及CFileDialog文件对话框的构造与路径获取,最后给出学生信息与数据采集两个编程实例。
7.1概述基本概念:数据管理和显示分开基本结构:应用程序对象(CWinApp)+框架窗口对象(CFrameWnd)+文档对象(CDocument)+视图对象(CView)
7.1概述1、应用程序对象---CWinApp派生类InitInstance()(1)应用程序的初始化;
7.1概述2、框架窗口对象---
CFrameWnd派生类OnCreate()(1)提供应用程序主窗口; (2)工具栏、状态栏的创建、初始化和销毁;7.1概述3、文档对象:CDocument的派生类Serialize()(1)管理和维护数据,串行化功能;
7.1概述---WM_COMMAND消息处理当用户选择了菜单项,单击了快捷键或工具条按钮,系统就会发送命令消息。 框架窗口实际上是大多数命令消息的接受者,但命令消息还可以在视图、文档,甚至应用程序类中被处理。
7.1概述---设计实例【例7.1】创建一个鼠标绘图程序,可以绘制矩形、椭圆和线段。
设计要求:
7.1概述---设计实例
本页源文件仅提取到标题或少量文字,详细内容请对照本页图示。
4 MFC文件操作,数据文件格式设计。
7.2 MFC菜单设计【例7.1】创建一个基于单文档结构的鼠标绘图程序。 建立包含“打开文件”、“保存文件”和“图形类型”三个菜单项的“绘图”菜单。 菜单项“打开文件”用来从图形数据文件读取图形数据,菜单项“保存文件”用来将当前屏幕上面的图形数据保存到文件,“图形类型”中包含一个级连菜单,内容为“线段”、“矩形”和“椭圆”三个菜单项。
7.2 MFC菜单设计---消息映射1、ON_COMMAND消息映射宏语法:ON_COMMAND(ID, func)说明:处理WM_COMMAND消息。 参数:(1) ID:WM_COMMAND消息附带的控件ID;
(2) func:消息处理函数,原型为:void func(void);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消息是在窗口将要绘制菜单项的时候产生。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 );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.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.3 MFC文件操作--
CFile类1、构造函数CFile( ); CFile( LPCTSTR lpszFileName,UINT nOpenFlags ); <参数1>lpszFileName文件路径<参数2>nOpenFlags共享和访问模式7.3 MFC文件操作--CFile类2、CFile::OpenCFile::Open和CFile::CFile( )配合使用。
virtual BOOL Open(LPCTSTR lpszFileName,UINTnOpenFlags); <参数1>lpszFileName文件路径<参数2>nOpenFlags共享和访问模式7.3 MFC文件操作--CFile类CFile::Open---nOpenFlagsCFile::modeCreate创建新文件,如果指定的文件已存在,则清空文件内容。 CFile::modeNoTruncate与modeCreate组合使用。 如果打开已经存在的文件,不清空文件内容。 CFile::modeRead只读方式CFile::modeReadWrite可读可写方式
7.3 MFC文件操作--CFile类CFile::Open---nOpenFlagsCFile::modeWrite只写方式CFile::shareDenyNone共享方式CFile::shareDenyRead打开文件后,拒绝其他进程读取该文件CFile::shareDenyWrite打开文件后,拒绝其他进程写入该文件CFile::shareExclusive打开文件后,拒绝其他进程读、写该文件
7.3 MFC文件操作--
CFile类3、CFile::Closevirtual void Close( ); 4、CFile::Readvirtual UINT Read( void* lpBuf,UINT nCount ); <参数1>lpBuf接收数据的缓冲区地址<参数2>nCount最大读取字节数7.3 MFC文件操作--
CFile类5、CFile::Writevirtual void Write( const void* lpBuf,UINT nCount ); <参数1>lpBuf写入数据缓冲区地址<参数2>nCount数据字节数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个字节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 );7.3 MFC文件操作--
CFile类11、CFile::Rename功能:重新命名文件static void PASCAL Rename(LPCTSTR lpszOldName,LPCTSTR lpszNewName ); <参数1>lpszOldName原文件名<参数2>lpszNewName新文件名7.3 MFC文件操作--
CFile类12、CFile::Remove功能:删除文件static void PASCAL Remove(LPCTSTR lpszFileName ); <参数1>lpszFileName文件路径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);7.3 MFC文件操作--CFileDialog类< 参数1> bOpenFileDialogTRUE文件打开对话框; FALSE文件保存对话框< 参数2> lpszDefExt缺省文件扩展名< 参数3> lpszFileName出现在文件名编辑框中的初始值< 参数4> dwFlags允许用户定制对话框的标志组合
7.3 MFC文件操作--CFileDialog类< 参数5>
lpszFilter文件类型过滤器static char BASED_CODE szFilter[] ="Worksheet Files (*.xls)|*.xls| All Files (*.*)|*.*||"; <参数6>pParentWnd父窗口指针7.3 MFC文件操作--
CFileDialog类2显示对话框virtual int DoModal( ); 返回值:IDOK、IDCANCEL表示用户选择了OK或者Cancel按钮。3获取文件路径名CString GetPathName( ) const; "C:\FILES\TEXT.DAT"7.3 MFC文件操作--
CFileDialog类4、获取文件名CString GetFileName( ) const; 返回文件名,如文件C:\FILES\TEXT.DAT,返回的字符串为"TEXT.DAT"。5、获取文件扩展名CString GetFileExt( ) const;7.4 MFC编程举例【例7.2】创建一个存储和显示学生信息的单文档应用程序。
本页源文件仅提取到标题或少量文字,详细内容请对照本页图示。
7.4 MFC编程举例【例7.3】创建一个数据采集模拟程序。
实时数据显示100个数据点,数据点多于100个时,实现滚动显示。 实现数据保存功能,程序可保留采集过程数据到指定的数据文件。 程序能够从数据文件中读取数据显示历史数据记录。
使用菜单命令控制系统状态。
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}