MFC应用程序结构
5.利用fstream类操作文件
操作举例:文件复制 void MyCopy(CString strSource, CString strTarget) { fstream fs, ft; CString str; char cs[200]; fs.open(strSource, ios::in) ; ft.open(strTarget, ios::out) ; while(! fs.eof() ) { fs.getline(cs,sizeof(cs)); str=cs; ft<<str<<endl;; } fs.close(); ft.close(); }
3. 文档视图结构 文档与视图的交互过程 1.CView类的GetDocument()函数 视图类CView的GetDocument()函数返回的是一个 CDocument或其派生类的指针。可用得到的文档指针来 访问文档中的数据。 从而在视图类中,实现文档类的数据与视图类的数据 进行交换。 2. CDocument类的UpdateAllViews()函数 当文档的数据发生了变化后,文档也要通知视图当 前的变化,以让视图能够及时更新,忠于文档的数据。 这样的一件工作是通过文档类中的UpdateAllViews()函 数来实现的。
MFC应用程序结构及开发实例 MFC
1. 创建一个MFC应用程序
1. 创建一个MFC应用程序
1. 创建一个MFC应用程序
2. 运行MFC应用程序
3. 文档视图结构
3. 文档视图结构
文档类继承于CDocument类,它描述了应用的数 据。抽象地说,文档是一个应用程序数据基本元素 的集合,它构成应用程序所使用的数据单元,文档 负责管理和维护应用的数据。 具体一点来说,文档是一种数据源,数据源有很 多种,最常见的是磁盘文件,但是文档不必非要是 一个磁盘文件,文档的数据源也可以来自串行口或 并行口的输入数据。文档对象负责来自所有数据源 的数据的管理。
4.利用CFile类操作文件 文件打开/关闭( 文件打开 关闭(Open/Close) 关闭 1. CFile类一般通过成员函数 类一般通过成员函数Open来打开文件 类一般通过成员函数 来打开文件 BOOL Open(LPCTSTR lpzsFileName,UINT nOpenFlag); 其中:lpzsFileName:为欲打开的文件名,可包含路经名; nOpenFlag: 用于设置访问模式,例如: Cfile f; f.Open(“D:\\My.TXT”, CFile::modeRead); 表示以读方式打开“D:\\My.TXT”文件。 2. 关闭文件函数 关闭文件函数Close Close()函数用于关闭由Open()函数打开的文件。例如 f.Close();
5.利用fstream类操作文件 文件的读写(getline/<<) 文件的读写 1. fstream类提供了getline ()函数用于读取一行数据 getline( char* pch, int nCount, char delim = '\n' ); getline()函数读取一行数据到pch变量中。 2. fstream类提供了<<操作符用于写入文件 如:FileStream<<str<<endl;。
3. 文档视图结构
视图类则继承于视类CView,它是一个基于 视类的窗口。 视图是数据的用户窗口,为用户提供了文 档的可视的数据显示,它把文档的部分或全部 内容在窗口中显示出来,视图给用户提供了一 个同文件中的数据进行交互的界面,它把用户 的输入转化为对文档中数据的操作。
3. 文档视图结构 文档与视图的关系 文档用来保存数据,视图用来显示数据, 视图是显示出的文档。一个文档可以有多个 不同的视图。文档与视图的关系,可用下图 来描述。
4.利用CFile类操作文件
利用CFile类操作文件的步骤如下:
① 创建CFile类对象: CFile f; ② 打开文件: ③ 读/写文件: ④ 关闭文件: f.Open(……) f.Read(……)/f.Write(……) f.close()
4.利用CFile类操作文件 CFile是MFC文件类的基类,它直接提供二进制文件 的输入/输出操作,并通过派生类支持文本文件和内存文 件。该类与其派生类的层次关系让程序通过各种CFile接 口使各种文件操作一致化。不论是内存文件、磁盘文件、 二进制文件,还是文本文件都可以使用几乎相同的函数 来操作,使程序更简单。CFile类的主要成员函数如下表 所示。
5.利用fstream类操作文件
包含的头文件必须包括: #include "fstream.h"
6. 菜单编辑及其命令响应7. 数据输入源自数据更新8. 按钮及其相应
9. 课后作业
1. 理解文档视图结构 2. 开发一个基于对话框的MFC应用程序实例,并 在该实例中添加数据输入、显示及按钮命令; 3. 利用fstream类实现文本文件的读取。
4.利用CFile类操作文件 文件的读写(Read/Write) 文件的读写 1. CFile类提供了Read()函数用于读入文件 UINT Read(void *lpBuf,UINT nCount) Read()函数返回值是传输到缓冲区的字节数。 2. CFile类提供了Write()函数用于写入文件 void Write(void *lpBuf,UINT nCount) ; Write()函数的参数与Read()函数的参数类似。
4.利用CFile类操作文件
文件操作举例:文件复制 void MyCopy(CString strSource, CString strTarget) { CFile fs, ft; int nCount; fs.Open(strSource, CFile::modeRead) ); ft.Open(strTarget, CFile::modeWrite) ; nCount = fs.Read(&s, sizeof(CString)); while( nCount ) { ft.Write(&s, sizeof(CString)); nCount = fs.Read(&s, sizeof(CString)); } fs.Close(); ft.Close(); }
5.利用fstream类操作文件 fstream是C++提供文件流操作类,对于操作文本类 数据文件非常方便。
成员函数 open close 功 能 打开磁盘文件 关闭打开的文件 成员函数 getline << 功 能 从文件中读取一行数据 向文件中写入数据
5.利用fstream类操作文件 文件打开/关闭(Open/Close) 1. fstream类一般通过成员函数Open来打开文件 void open( const char* szName, int nMode, int nProt = filebuf::openprot ); 其中: const char* szName:为欲打开的文件名,可包含 路经名; int nMode: 用于设置访问模式,例如: fstream f; f.open(“D:\\My.TXT”, ios::in); 表示以读方式打开“D:\\My.TXT”文件。 2. 关闭文件函数close f.close()函数用于关闭由open()函数打开的文件。
成员函数 Open Close Seek Remove SetStatus 功 能 打开磁盘文件 关闭打开的文件 文件指针定位 删除指定的文件 设置文件状态信息 成员函数 Read Write GetLength Rename GetStatus 功 能 从打开的文件中读取数据 将数据存储在打开的文件中 获取文件长度信息 更改指定文件名 获取文件状态信息