当前位置: 首页 > article >正文

MFC -文件类控件

前言

  • 各位师傅大家好,我是qmx_07,今天给大家讲解MFC中的文件类
    在这里插入图片描述

MFC文件类

  • 在MFC中,CFILE 是基本的文件操作类,提供了读取、写入、打开、关闭等操作方法
  • 主要成员函数:Open(用于打开文件,设置模式 例如 只读 只写 读写)
  • Read 和 Write(用于读取文件数据 和 写入文件数据)
  • Close(打开文件,完成操作之后需要关闭文件)
  • 绘图准备
    在这里插入图片描述
  • Edit Control文本编辑框,设置文本靠右输出,只读,多行显示,具有垂直滚动条
  • 设置四个Button按钮
  • 双击 自动创建对应函数
    在这里插入图片描述
    在这里插入图片描述
  • 文本编辑框需要添加变量,以便后续使用

读取文件内容

void CMFCApplication2Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	//读取
	CFile File;
	File.Open(L"G:\\test.txt",CFile::modeRead);//读取对应文件,读模式打开
	DWORD FileLength = File.GetLength();//获取 文件文本长度

	char* Buffer = new char[FileLength + 1];//创建文本空间,+1是因为'\0'
	memset(Buffer, 0, FileLength + 1);//初始化空间

	File.Read(Buffer, FileLength);//将数据写入到Buffer

	CString csBuffer;
	csBuffer.Format(L"%S", Buffer);//格式化输入到csBuffer
	m_Edit.SetWindowTextW(csBuffer);//将csBuffer的内容 输出到文本框控件里
	File.Close();//关闭文件
}
  • 获取文件内容,开辟空间,格式化输出到屏幕
    文件准备:
    在这里插入图片描述
    画面演示:
    在这里插入图片描述

写入文件

void CMFCApplication2Dlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	//写入
	CFile File;
	File.Open(L"G:\\test.txt", CFile::modeWrite);//设置打开文件,写入模式
	char* WriteBuffer = "qmx_07";//要写入的数据
	File.Write(WriteBuffer, strlen(WriteBuffer));//写入文本,写入的长度
	File.Flush();//刷新
	File.Close();//关闭文件
}
  • 写入文件 记得要 刷新一下
    画面演示:
    在这里插入图片描述

显示文件夹内容

void CMFCApplication2Dlg::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码
	//显示文件夹内容
	CString FileInfo;
	CFileFind finder;
	BOOL Ret = finder.FindFile(L"G:\\MFC_Demo\\*.*");//设置要查找的文件夹以及名称后缀
	while (Ret)
	{
		Ret = finder.FindNextFileW();
		CString strPath = finder.GetFilePath();//获取Path路径
		FileInfo += strPath += "\r\n";//将path路径陆续添加到FileInfo字符串里
	}
	m_Edit.SetWindowTextW(FileInfo);//将信息 输出到文本框中
}
  • FindNextFileW函数 会返回布尔值,用于检索是否找到下一个文件,如果找到为True,否则为False,退出循环
    环境准备:
    在这里插入图片描述
    画面演示:
    在这里插入图片描述
查找文件
void CMFCApplication2Dlg::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码
	//显示文件夹内容
	CString FileInfo;
	CFileFind finder;
	BOOL Ret = finder.FindFile(L"G:\\MFC_Demo\\*.*");
	while (Ret)
	{
		Ret = finder.FindNextFileW();
		CString strName = finder.GetFileName();
		CString strPath = finder.GetFilePath();
		FileInfo += strPath += "\r\n";
		if (strName == "hello.txt")
		{
			AfxMessageBox(strName);
		}
	}
	m_Edit.SetWindowTextW(FileInfo);
}
  • 在查找文件夹的基础上,增加if匹配
  • AfxMessageBox 可以弹出消息,但是此消息是模态
    画面演示:
    在这里插入图片描述

选择文件

void CMFCApplication2Dlg::OnBnClickedButton4()
{
	// TODO: 在此添加控件通知处理程序代码
	//选择文件
	CFileDialog File(TRUE, NULL, NULL, NULL, L"文件|*.txt|ALL Files|*.*||", this);
	File.DoModal();//显示文件选择对话框,阻塞程序运行,直到用户关闭对话框
	CString Path = File.GetPathName();//获取文本路径
	m_Edit.SetWindowTextW(Path);//将文本路径输出到对话框中
}
  • CFileDialog参数解释: 第一个参数,如果为True 代表打开文件对话框,如果为False为 保存文件对话框
  • 这几个NULL分别表示初始目录、默认文件名和文件扩展名过滤器
  • L"文件|.txt|ALL Files|.*||" 表示文件对话框 可以显示的文件类型
  • this代表对话框的 父窗口
  • 这段代码解释:通过设置文件选择,获取文件路径,输出到编辑框
    画面演示:
    在这里插入图片描述

总结

  • 介绍了MFC文件类使用 读取文件,写入文件,显示文件夹内容,查找文件,以及创建文件选择对话框

http://www.kler.cn/a/319662.html

相关文章:

  • CSS 响应式设计之媒体查询技术
  • 计算机毕业设计Python+大模型中医养生问答系统 知识图谱 医疗大数据 中医可视化 机器学习 深度学习 人工智能 大数据毕业设计
  • 万字长文解读深度学习——生成对抗网络GAN
  • ABAP开发学习——ST05 ABAP SQL跟踪工具
  • 【C#设计模式(4)——构建者模式(Builder Pattern)】
  • DBeaver 连接 OceanBase Oracle 租户
  • 暑期内卷!就练这400页软件测试面试题(附答案解析)!
  • fmql之ubuntu添加dhcp服务
  • 函数题 7-7 12-24小时制【PAT】
  • Postgresql一行命令备份(pg_dump版)
  • 力扣题解2374
  • 机器学习 | 使用scikit-learn学习Python中的PCA(主成分分析)
  • 无服务器计算构建人工智能管理区块链系统
  • Varjo在芬兰开设新工厂,以满足国防部门在XR模拟训练中的需求
  • 智能识别猫猫
  • 【JVM】垃圾回收机制|死亡对象的判断算法|垃圾回收算法
  • 谷歌的AI反击战:创始人谢尔盖·布林的回归与大模型组合的未来
  • vue2使用npm引入依赖(例如axios),报错Module parse failed: Unexpected token解决方案
  • 复制他人 CSDN 文章到自己的博客
  • 快递物流短信API接口代码
  • ​​​​​​​月考发成绩,为什么老师都用易查分?
  • MySQL数据库的备份与恢复
  • 力扣(leetcode)每日一题 815 公交路线 (图的宽度优先遍历变种)
  • 实验19:ds18b20温度实验
  • Unity屏幕震动效果
  • 「数学::质数」试除法 / Luogu P5736(C++)