用CFileDialog导出文件,用户可指定文件名后缀等,感觉操作上比上文的 BROWSEINFO 更加人性化。

//将数据项写入CSV文件
int PutCSVItemLine(FILE *file, CStringArray &sItemLine)
{
//准备行数据
CStringA sLineString; //循环取子项
for(INT_PTR nItem=0; nItem<sItemLine.GetSize(); nItem++)
{
//取子项
CStringA sItem(sItemLine.GetAt(nItem)); //查找是否包含引号或逗号
if(sItem.FindOneOf("\",\r\n") >= 0)
{
//单引号替换为双引号
sItem.Replace("\"", "\"\""); //首尾用引号包含
sItem.Insert(0, "\""); sItem += "\"";
} //添加逗号分隔符
if(!sLineString.IsEmpty()) sLineString += ","; //追加数据
sLineString += sItem;
} //行尾添加\r\n
sLineString += "\r\n"; //写入文件
return (int) fwrite((LPCSTR)sLineString, 1, sLineString.GetLength(), file); }
void DLG_FuncPwdList::OnBnClickedExport()
{
// TODO: 在此添加控件通知处理程序代码
CString strFilter, defaultFileName, finalFileName;
SYSTEMTIME t;
GetLocalTime(&t);
defaultFileName.Format(_T("功能密码%d%d%d%d%d%d"),t.wYear,t.wMonth,t.wDay, t.wHour, t.wMinute, t.wSecond); //
strFilter = "Excel文件 (*.csv)|*.csv|文本文件 (*.txt)|*.txt||";
CFileDialog TmpDlg(FALSE, _T("csv"), defaultFileName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, strFilter.GetBuffer(), this); if (TmpDlg.DoModal() == IDOK)
{
//获取文件路径
finalFileName = TmpDlg.GetPathName();
CString fileExt = TmpDlg.GetFileExt(); //导出文件
FILE *f = NULL;
if(_tfopen_s(&f, finalFileName, _T("wb")) == 0)
{
//标题
CStringArray sLine;
sLine.Add(_T("序号"));
sLine.Add(_T("功能名称"));
sLine.Add(_T("密码"));
PutCSVItemLine(f, sLine);
for(int i=0;i<FuncPwdList.size();i++)
{
sLine.RemoveAll();
CString tmp;
tmp.Format(_T("%d"),FuncPwdList[i].FuncId);
sLine.Add(tmp);
sLine.Add(FuncPwdList[i].FuncName);
if(fileExt.CompareNoCase(_T("csv")) == 0)
{
tmp.Format(_T("\t%s\t"),FuncPwdList[i].Pwd);//处理开头为0的数字字符串
}
else
{
tmp.Format(_T("%s"),FuncPwdList[i].Pwd);
}
sLine.Add(tmp);
PutCSVItemLine(f, sLine);
}
fclose(f);
}
CString msg = "导出成功!文件路径:" + finalFileName;
AfxMessageBox(msg);
return;
}
return;
}

【MFC学习二】CFileDialog导出文件的更多相关文章

  1. C++ MFC学习 (二)

    使用向导创建MFC程序 1. 新建-> 选择 MFC -> MFC应用程序 ->下一步 2. 应用程序类型选择     选择单个文档,MFC标准  -> 下一步   3. 下一 ...

  2. MFC 学习笔记

    MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...

  3. emberjs学习二(ember-data和localstorage_adapter)

    emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...

  4. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  5. MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变

    1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量:           CToolBar m_toolbar;CImageList ...

  6. TweenMax动画库学习(二)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  7. Hbase深入学习(二) 安装hbase

    Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...

  8. Struts2框架学习(二) Action

    Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...

  9. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...

  10. Quartz学习--二 Hello Quartz! 和源码分析

    Quartz学习--二  Hello Quartz! 和源码分析 三.  Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...

随机推荐

  1. 什么是全同态加密(FHE)中的自举(Bootstrapping)?

    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全.密码学.联邦学习.同态加密等隐私计算领域的技术和内容. 全同态加密(Fully Homomorphic Encrypti ...

  2. node知识点及第三方模块

    1. 读文件内容 // 1. 通过模块的名字fs对模块进行引用 const fs = require('fs'); // 2. 通过模块内部的readFile读取文件内容 fs.readFile('. ...

  3. 使用docker compose 编排微服务发布

    本文为博主原创,未经允许不得转载: 目录: 1. compose 简介 2. compose 安装 3. 编写 docker-compose.yml 实现微服务发布 4. docker-compose ...

  4. 2023年春秋杯网络安全联赛冬季赛-CRYPTO MISC WP

    浅谈:*代表未做出的,赛后复现了一下.本次题目还是挺有意思的,比赛期间做啦俩.题目有很多值得学习的东西.顺便在此记录一下.继续努力吧!! CRYPTO not_wiener(中等) 题目附件 查看代码 ...

  5. [转帖]Kafka主题与分区

    https://zhuanlan.zhihu.com/p/428845986#:~:text=%E4%B8%80%E3%80%81kafka-topics.sh%E6%93%8D%E4%BD%9C%2 ...

  6. Jmeter学习之一_连接与测试Redis

    Jmeter学习之一_连接与测试Redis 简介 下载: https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.zip 注意事项: D ...

  7. [转帖]ethtool 命令介绍

    https://www.jianshu.com/p/f456e73a0437 name ethtool - query or control network driver and hardware s ...

  8. [转帖]Linux CPU频率控制

    1.       概述 Linux 内部共有五种对频率的管理策略 userspace , conservative , ondemand , powersave  和  performance. l  ...

  9. [转帖]耗时几个月,终于找到了JVM停顿十几秒的原因

    https://www.cnblogs.com/codelogs/p/16060792.html   原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 最近我们系 ...

  10. nginx 最简单的在同一个配置文件里面将http 监听的端口转发到其他端口的方法

    今天发现一个问题, 我这边修改了nginx 的listen的端口之后 应用出现了问题 无法使用. 想到之前曾经试验过 tcp 的 proxy 所以就想到直接再配置文件的默认添加一句话 启动TCP的 端 ...