MFC程序对文件的处理方法


对文件的处理是MFC程序设计中非常常见的应用。本文就以实例形式做一简单叙述。具体方法如下:

1.CFileDialog的应用

格式如下:

CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL ); 

具体参数解释如下:

bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框
lpszDefExt 指定默认的文件扩展名
lpszFileName 指定默认的文件名
dwFlags 指明一些特定风格
lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如:
pParentWnd 为父窗口指针

具体代码如下:

const int INT_MAX_FILE_NUM = 1; 
TCHAR szFileFilter[] = _T("Date File(*.csv)|*.csv|");
TCHAR *pszFileNameBuf = new TCHAR[INT_MAX_FILE_NUM * _MAX_PATH];

CFileDialog dlgOpenFile(FALSE, _T("csv"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFileFilter, this);
::memset(pszFileNameBuf, 0, INT_MAX_FILE_NUM * _MAX_PATH * sizeof(TCHAR));
dlgOpenFile.m_ofn.nMaxFile = INT_MAX_FILE_NUM * _MAX_PATH;    
dlgOpenFile.m_ofn.lpstrFile = pszFileNameBuf;    
dlgOpenFile.m_ofn.lpstrFile[0] = NULL;
if(dlgOpenFile.domodal == IDOK)
{
  //获取文件名
}

这里需要注意的是:

(1)DlgOpenFile第一个参数为FALSE时,显示保存对话框,为TRUE时,显示打开对话框

(2)文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明,否则会造成乱码

获取保存的文件名称:

CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目录名和扩展名

CString CFileDialog::GetFileName( ) 得到完整的文件名

CString CFileDialog::GetExtName( ) 得到完整的文件扩展名

CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,包括目录名和扩展名

POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置

2.向.CSV文件写入

由于向.CSV文件中写入的内容打开时是以表格的形式展现,所以在大多数以结构体保存到文件中,以文件的形式查看内容时比较常用。

这里需要注意的是:

(1)如果像一般文件那样写入,查看文件时很明显都是以双字节存入的,导致查看问题,所以我在这个地方使用CStdioFilel类,最后可以使用WriteString()将字符写入到文件中

(2)当字符中出现中文后,导致中文后面的内容全部无法写入到文件中,这时需要在写入文件WriteString()之前加一句setlocale( LC_CTYPE, "chs" );

(3)当一个表格中字符完成后,需要在字符串后面添加‘,',需要换行时,需要在字符串后面加上‘\r\n';

例如:

strTemp.Format(_T("%s,"),lvcol.pszText);
strTemp.Format(_T("%s\r\n"),lvcol.pszText);

(4)一般情况下,使用CString将要写入文件中的内容全部保存后,在一起写入文件;

具体代码如下:

CString strEx; 
strEx += strTemp;

希望本文所述实例对大家的MFC程序设计有所帮助。



相关阅读:
js简单实现交换Li的值
Win10 RS1预览版14271内置Defender离线杀毒和之前有什么区别?
win10任务栏电源图标不见了或者显示灰色该怎么办?
open 动态修改img的onclick事件示例代码
Jquery 模拟用户点击超链接或者按钮的方法
jquery中的常见问题及快速解决方法小结
C#使用Equals()方法比较两个对象是否相等的方法
在SQL Server中实现最短路径搜索的解决方法
win10摄像头无法打开用不了怎么办? win10正式版摄像头无法使用解决办法图文教程
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
HTML5 Canvas阴影使用方法实例演示
C#流类FileStream学习使用笔记
jquery图片滚动放大代码分享(2)
SQL Server 2005 安装遇到的错误提示和解决方法
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 科技公司车间一个月实习报告 追无止,求无境作文 笑三国 心碎的高跟鞋 老师那双眼睛100字 蒲公英,偶尔也会迷路 同学二十周年聚会主持人发言 禅理故事:背后的道理 苏教版四年级上册品德与社会教学计划 富有人生哲理的句子 不要因为它的结束而哭 有时缘分,不在于遇见多少,而在于真正拥有多少 真正的友谊作文 2016晚安心语正能量图 平实的爱情 高中高二作文1000字:踢毽能手 陈颖 《诗人》诗歌 9月大学生入党志愿 圆月作文400字 幼儿三句半剧本《新的一年新气象》 青瓦台门前联想 每个人都是平等的,没有贵贱之分 让我感动的人作文500字 转呼啦圈 2017小学二年级期末评语大全 往事,碾入风尘中的尘香 “说NO”秘术让你在职场不得罪人 学生活动及管理相关工作半年总结 微笑的力量200字 永不放弃(赛尔号小说)第一至二章作文1900字 新党员学习心得体会 工程技术员工作总结 生活不简单,尽量简单过 歇一歇 贸易统计工作总结 三级跳 可爱的弟弟作文700字 生活便是美好 秋之田野作文300字 我的年度汉字作文 向雷锋叔叔学习作文600字 《特别的女生萨哈拉》读后感作文400字 关于做好学习实践科学发展观活动整改落实后续工作的报告 我爱过,所以我活过 夏日杂诗 经典感悟:人生应该懂得的五种心态 关于依法行政中存在的问题及对策 冬天唯美句子 2015小学英语骨干教师培训总结 小学四年级作文450字:爱,无处不在 金鱼和玫瑰读后感250字 纪念九一八升旗仪式主持词:铭记历史 开创未来

Copyright © 2016 phpStudy |