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

打怪升级之CFileDialog类介绍

CFileDialog类

CFileDialog封装用于文件打开操作或文件保存操作的常见对话框。信息来源自Windows官方文档:https://learn.microsoft.com/zh-cn/cpp/mfc/reference/cfiledialog-class?view=msvc-170

这里重点介绍几个常用的函数功能:

构造函数

explicit CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt = NULL,LPCTSTR lpszFileName = NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter = NULL,CWnd* pParentWnd = NULL,DWORD dwSize = 0,BOOL bVistaStyle = TRUE);

参数:

1.bOpenFileDialog
[in] 参数,指定要创建的对话框类型。 将其设置为 TRUE 可构造“文件 > 打开”对话框。 将其设置为 FALSE 可构造“文件 > 另存为”对话框。

2.lpszDefExt
[in] 默认的文件扩展名。 如果用户不包含已知扩展名 (在文件名框中) 用户计算机上具有关联的扩展, 则 lpszDefExt 指定的扩展名会自动追加到文件名中。 如果此参数为 NULL,则不会追加任何扩展名。

3.lpszFileName
[in] “文件名”框中显示的初始文件名。 如果为 NULL,则不会显示初始文件名。

4.dwFlags
[in] 一个或多个标志的组合,可用于自定义对话框。 有关这些标志的说明,请参阅 Windows SDK 中的 OPENFILENAME 结构。 如果修改 m_ofn.Flags 结构成员,请在更改中使用按位或运算符以保持默认行为不变。

5.lpszFilter
[in] 一系列字符串对,用于指定可应用于文件的筛选器。 如果指定文件筛选器,则只有与筛选条件匹配的文件才会显示在“文件”列表中。 请参阅“注解”部分,详细了解如何使用文件筛选器。

6.pParentWnd
[in] 一个指针,指向文件对话框的父窗口或所有者窗口。

7.dwSize
[in] OPENFILENAME 结构的大小。 此值取决于操作系统版本。 MFC 使用了此参数来确定要创建的相应对话框类型。 默认大小为 0 表示 MFC 代码将根据运行程序的操作系统版本确定要使用的正确的对话框大小。

8.bVistaStyle
[in] 注意 此参数在 Visual Studio 2008 及更高版本中可用,因此,仅当你在 Windows Vista 或更高版本中运行时,才使用新样式对话框。

指定文件对话框样式的参数。 将其设置为 TRUE 可使用新 Vista 样式文件对话框。 否则将使用旧样式的对话框。 请参阅“注解”部分,详细了解如何在 Vista 下运行。

显示函数

virtual INT_PTR DoModal();

返回值:

IDOK 或 IDCANCEL。 如果返回 IDCANCEL,请调用 Windows CommDlgExtendedError 函数以确定是否发生了错误。

IDOK 和 IDCANCEL 是常量,指示用户选择了“确定”按钮还是“取消”按钮。

返回的INT_PTR是常量,要么是IDOK,要么是IDCANCEL。如果有选中文件,那么就是IDOK,没有选中文件无法定义IDOK。

获取路径名、文件名等信息

if (result == IDOK)//如果有选中文件,那么result就是IDOK
{CString pathName, fileName, titleName, extName;pathName = openDlg.GetPathName();//得到完整的文件名,包括目录名和扩展名如:c:/test/test1.txtfileName = openDlg.GetFileName();//得到完整的文件名,包括扩展名如:test1.txttitleName = openDlg.GetFileTitle();//得到完整的文件名,不包括目录名和扩展名如:test1extName = openDlg.GetFileExt();// 得到完整的文件扩展名,如:txtMessageBox(pathName + "\r" + fileName + "\r" + titleName + "\r" + extName);//通过显示,注意几者区别
}

如此便成功将选择文件夹信息提取称为了CString。

实战案例

void CMFCCSVSENDDlg::OnBnClickedOpen()
{// TODO: 在此添加控件通知处理程序代码CFileDialog openDlg(TRUE,_T("CLS File(*.csv)|*.csv"),NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("CLS File(*.csv)|*.csv||"),this);INT_PTR result = openDlg.DoModal();//以模态方式创建打开文件对话框if (result == IDOK)//如果有选中文件,那么result就是IDOK{CString pathName, fileName, titleName, extName;pathName = openDlg.GetPathName();//得到完整的文件名,包括目录名和扩展名如:c:/test/test1.txtfileName = openDlg.GetFileName();//得到完整的文件名,包括扩展名如:test1.txttitleName = openDlg.GetFileTitle();//得到完整的文件名,不包括目录名和扩展名如:test1extName = openDlg.GetFileExt();// 得到完整的文件扩展名,如:txtMessageBox(pathName + "\r" + fileName + "\r" + titleName + "\r" + extName);//通过显示,注意几者区别}
}

效果:

在这里插入图片描述

注意:

1.很多时候我们只需要路径和文件名就可以了,所以没有必要非得在串口类里加CFileDialog类。

2.所谓保存,其实也不是CFileDialog存的,这个类确定了一个位置和文件后,需要你手动添加代码实现才行。

相关文章:

打怪升级之CFileDialog类介绍

CFileDialog类 CFileDialog封装用于文件打开操作或文件保存操作的常见对话框。信息来源自Windows官方文档:https://learn.microsoft.com/zh-cn/cpp/mfc/reference/cfiledialog-class?viewmsvc-170 这里重点介绍几个常用的函数功能: 构造函数 explic…...

配天智造自主原创数字工厂:百余名员工人均创收122万

配天智造(832223)2022年度报告显示,报告期内公司实现营业收入1.3亿元,同比增长52%,归属于挂牌公司股东的净利润3867万元,同比增长28.11%。而这家公司全部在职员工仅有107人,人均创收约为122万。…...

COLMAP

简介:在使用instant-ngp过程中需要使用COLMAP得到模型的必要输入,比如模型需要的相机外参我们就可以通过COLMAP中的sparse reconstruction稀疏重建得到;而对于depth map深度图我们则需要dense reconstruction稠密重建得到,下面我们…...

2023-3-8 刷题情况

礼盒的最大甜蜜度 题目描述 给你一个正整数数组 price ,其中 price[i] 表示第 i 类糖果的价格,另给你一个正整数 k 。 商店组合 k 类 不同 糖果打包成礼盒出售。礼盒的 甜蜜度 是礼盒中任意两种糖果 价格 绝对差的最小值。 返回礼盒的 最大 甜蜜度。…...

关于长连接服务器和客户端之间要加入心跳的一些讨论

在之前的章节里深入浅出TCPIP之深入浅出TCPIP之TCP重传机制 我们都知道了TCPIP协议栈有个默认的TCP心跳机制,这个心跳机制是和socket绑定的,可以对指定的套接字开启协议栈的心跳检测机制。默认情况下,协议栈的心跳机制对socket套接字是关闭的,如果要使用需要人为开启的。 比…...

LeetCode——1590. 使数组和能被 P 整除

一、题目 给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空),使得剩余元素的 和 能被 p 整除。 不允许 将整个数组都移除。 请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回 -1…...

12N65-ASEMI高压MOS管12N65

编辑-Z 12N65在TO-220封装里的静态漏极源导通电阻(RDS(ON))为0.68Ω,是一款N沟道高压MOS管。12N65的最大脉冲正向电流ISM为48A,零栅极电压漏极电流(IDSS)为10uA,其工作时耐温度范围为-55~150摄氏度。12N65功耗&#x…...

cushy-serial 一个轻量级Python serial库

本文自笔者博客: https://www.blog.zeeland.cn/archives/rgoihgxcoci3 简介 cushy-serial是一个轻量级的Serial框架,初衷是希望使Serial编程变得更加简单、快捷,因此,相较于传统的pyserial,该框架可以更加快速地构建起一个serial…...

音视频开发系列(7)——Opengl常用Api介绍part1

GLES20.glTexParameteri GLES20.glTexParameteri是OpenGL ES 2.0用于设置纹理过滤器和纹理包装模式的函数。它有三个参数: target参数 target参数指定要设置纹理参数的纹理目标,根据不同的target值,glTexParameteri函数的行为也会有所不同…...

linux时间的特殊用法

今天介绍linux下Date时间命令相关的特殊用法 date (当前的时间) 修改系统当前时间: date -s "2022-6-20 9:33:50" 昨天的时间是我们比较常用的: date -d "yesterday" %Y%m%d ( 昨天的时间) date -d "1 day ago" %Y%m%d …...

axios 封装,API接口统一管理

分享一个自己封装的 axios 网络请求 主要的功能及其优点: 将所有的接口放在一个文件夹中管理(api.js)。并且可以支持动态接口,就是 api.js 文件中定义的接口可以使用 :xx 占位,根据需要动态的改变。动态接口用法模仿…...

SpringBoot使用Redis实现缓存

目录 实现步骤 1. 在 pom.xml 配置文件中添加如下依赖 2. 在 application.properties 中添加如下配置 3. 新建 RedisConfig.class,继承 CachingConfigurerSupport,添加如下方法 4. 新建 RedisService.class 添加如下方法 注意:cacheKey…...

[失业前端恶补算法]JavaScript leetcode刷题top100(三)

专栏声明:只求用最简单的,容易理解的方法通过,不求优化,不喜勿喷 今天更新五个 easy 难度题目: 相交链表 题面 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个…...

Spark RDD的设计与运行原理

一、Spark RDD概念 一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可以分成多个分区,每个分区就是一个数据集片段,并且一个RDD的不同分区可以被保存到集群中不同的节点上,从而可以在集群中的…...

Golang的下载与安装

Windows系统 进入golang官方下载网站:所有版本 - Go 编程语言如图所示 下载后打开您下载的 MSI 文件,然后按照提示安装 Go。 验证是否已安装 Go。...

广州蓝景分享—8大Web前端开发的趋势

2023 年 1 月 11 日,2022 年度 StateOfJS 调查结果正式公布!StateOfJS 是前端生态圈中比较有影响力的且规模较大的数据调查。本文就来解读一下 2022 年 StateOfJS 的调查结果! JavaScript 发展很快,但似乎 JavaScript 开发人员的…...

Java学习-MySQL-创建数据库表

Java学习-MySQL-创建数据库表 SHOW DATABASESUSE school CREATE TABLE IF NOT EXISTS student( id INT(10) NOT NULL AUTO_INCREMENT COMMENT 学号, name VARCHAR(30) NOT NULL DEFAULT 匿名 COMMENT 姓名, pws VARCHAR(20) NOT NULL DEFAULT 123456 COMMENT 密码, sex VARCHA…...

Ethercat学习-GD32以太网学习

文章目录1、GD32F4以太网简介2、以太网模框图简介3、以太网主要模块介绍SMI接口RMII接口与MII接口DMA控制器4、以太网配置流程5、其他1、GD32F4以太网简介 GD32F4系列以太网模块包含10/100Mbps以太网MAC,数据的收发都通过DMA进行操作,支持MII&#xff0…...

项目规模估算如何精准 4大注意事项

项目报价,需要首先进行项目规模估算,如何估算更精准,6大注意事项。 1、项目范围规划 在项目估算前,需要对项目范围进行规划,这包括所有活动以及开发可交付产品所需的流程。范围规划是前提,它明确定义了项目…...

低代码:助力乡村振兴事业开启“智慧模式”

伴随着脱贫攻坚目标任务的全面完成,我国“三农”工作重心历史性地转向全面推进乡村振兴,这也标志着我国农业农村工作迈上了一个新台阶。 什么是乡村振兴? 乡村振兴是新时代“三农”工作的总抓手,坚持农业农村优先发展,…...

day52 ResNet18 CBAM

在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes&#xff0…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...