创建项目
首先我们创建一个MFC项目。
项目目录下创建一个文件
在项目目录下,我们创建一个book.txt
文件
清除按钮逻辑
首先我们编写下清除按钮的逻辑
void CMFCApplication2Dlg::OnBnClickedButton5()
{
SetDlgItemText(IDC_EDIT1, TEXT(""));
}
读取文件方法一: 使用C语言API读取文件内容
点击Button1为调用C语言相关API函数读取文件
代码如下
void CMFCApplication2Dlg::OnBnClickedButton1()
{
CString s = TEXT("************** C **********");
char line[256];
FILE* pFile = NULL;
// 打开文件
errno_t err = fopen_s(&pFile, "book.txt", "r");
if (err != 0) {
printf("Failed to open , error code %d\n", err);
return;
}
// 读取到缓冲中
while (fgets(line, 256, pFile) != NULL) {
s += line;
s += TEXT("\r\n");
}
fclose(pFile);
// 设置内容到编辑框中
SetDlgItemText(IDC_EDIT1, s);
}
运行效果
读取文件方法二: 使用C++语言API读取文件内容
点击Button2为调用C语言相关API函数读取文件
代码如下
// 包含一下需要用的头文件
#include <fstream>
void CMFCApplication2Dlg::OnBnClickedButton2()
{
CString s = TEXT("************** C++ **********");
char line[256];
// 输入文件流
std::ifstream ifs("book.txt");
// 每次读取一行
while (ifs.getline(line, 256)) {
s += line;
s += TEXT("\r\n");
}
// 关闭文件
ifs.close();
// 设置内容到编辑框中
SetDlgItemText(IDC_EDIT1, s);
}
运行效果
读取文件方法三: 使用Windows API读取文件内容
代码如下
void CMFCApplication2Dlg::OnBnClickedButton3()
{
CString s = TEXT("************** Windows API **********");
HANDLE hFile; // 定义一个文件句柄
CHAR lpFileDataBuffer[8192]; // 保存读取的文件内容
DWORD dwReadedSize; // 实际读取的大小
ZeroMemory(lpFileDataBuffer, 8192); // 字符数组初始化清零
hFile = CreateFile(
TEXT("book.txt"), // 打开的文件名
GENERIC_READ, // 读文件的方式
FILE_SHARE_READ, // 共享读
NULL, // 默认的安全属性
OPEN_EXISTING, // 打开已经存在的文件
FILE_ATTRIBUTE_NORMAL, // 常规的文件属性
NULL // 不使用模板
);
// 读取文件内容
ReadFile(hFile, lpFileDataBuffer, 8192, &dwReadedSize, NULL);
// 关闭句柄
CloseHandle(hFile);
// 设置内容到编辑框中
s += lpFileDataBuffer;
SetDlgItemText(IDC_EDIT1, s);
}
运行效果
读取文件方法四: 使用MFC读取文件内容
MFC实际上内部的实现是对Windows API进行了一层包装
代码如下
void CMFCApplication2Dlg::OnBnClickedButton4()
{
CString s = TEXT("************** MFC **********");
CString line;
CStdioFile file(TEXT("book.txt"), CFile::modeRead); // 读模式打开文件
// 读取文件
while (file.ReadString(line)) {
s += line;
s += TEXT("\r\n");
}
SetDlgItemText(IDC_EDIT1, s);
}