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

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);//将数据写入到BufferCString csBuffer;csBuffer.Format(L"%S", Buffer);//格式化输入到csBufferm_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文件类使用 读取文件,写入文件,显示文件夹内容,查找文件,以及创建文件选择对话框

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【delphi】正则判断windows完整合法文件名,包括路径
  • 【深度学习】深度学习模型的加密及解密方案及源码
  • Python爬虫使用实例-umei
  • php环境搭建教程
  • Linux快速安装ClickHouse
  • P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪
  • Iframe窗口通信
  • CentOS上使用Mosquitto实现Mqtt主题消息发布和订阅mqtt主题消息连同时间戳记录到文件
  • 爬虫的流程
  • 【Docker】Docker 常见问题及解决方案
  • MyBatis-Plus 分页插件
  • Gitee基本指令操作
  • 华硕电脑用U盘方式重装系统
  • 【iOS】push和pop、present和dismiss
  • 记某学校小程序漏洞挖掘
  • [Vue CLI 3] 配置解析之 css.extract
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • C++类中的特殊成员函数
  • docker容器内的网络抓包
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • JS函数式编程 数组部分风格 ES6版
  • Koa2 之文件上传下载
  • React Native移动开发实战-3-实现页面间的数据传递
  • 给Prometheus造假数据的方法
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 如何设计一个微型分布式架构?
  • 深度学习中的信息论知识详解
  • 算法-插入排序
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 用mpvue开发微信小程序
  • 云大使推广中的常见热门问题
  • 【干货分享】dos命令大全
  • Linux权限管理(week1_day5)--技术流ken
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​数据链路层——流量控制可靠传输机制 ​
  • #每日一题合集#牛客JZ23-JZ33
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C++17) std算法之执行策略 execution
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (C语言)共用体union的用法举例
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (力扣)1314.矩阵区域和
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (原創) 未来三学期想要修的课 (日記)
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转)用.Net的File控件上传文件的解决方案
  • .Net - 类的介绍