频道直达:新闻 - 组网 - 安全 - 服务器 - 存储 - 系统 - 应用 - 开发 - 数据库 - 前沿 - 技术人 - 培训 - 求职 - 读书 - 教程 - 专题 - 产品 - 案例 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

Visual C++实现文件间批量转换功能

作者: 我就喜欢 出处:Csdn 2007-07-17 15:03    砖    好    评论   进入论坛
阅读提示:本文给出了把指定目录下的色谱数据文件全部转换成纯文本文件这一功能的实例,供大家参考!

一、前言

本人在开发惠普色谱工作站增强软件的过程中,实现了把指定目录下的色谱数据文件全部转换成纯文本文件的功能。下面,通过用一个具体的例子来说明此功能的实现方法。

全部代码用Visual C++6.0在Windows95/98/2000下编译通过。

二、实例

首先用MFC AppWizard生成一个SDI风格的应用程序test,生成过程中全部使用缺省设置。

其次,利用资源编辑器,在主菜单“文件”下增加一个菜单项“转换”,属性为:

◆ID:ID_CONVERT
◆Caption: 转换
◆Prompt: 在不同格式文件之间进行转换\n转换文件

然后用“CTRL-W”热键激活MFC ClassWizard,为CmainFrame类增加响应ID_CONVERT消息的命令函数OnConvert()。加入转换功能的代码如下所示:

 void CMainFrame::OnConvert()
{
 LPMALLOC pMalloc;//利用shell扩展功能
 BROWSEINFO bi;
 if (SUCCEEDED(SHGetMalloc(&pMalloc)))//为生成目录选择对话框分配自由内存
{
 ZeroMemory(&bi,sizeof(bi));//清零分配的空间
 char pszDirName[MAX_PATH];//存放选择的目录名
 LPITEMIDLIST pidl;
 bi.hwndOwner = GetSafeHwnd();
 bi.pidlRoot = NULL;
 bi.pszDisplayName = pszDirName;
 bi.lpszTitle = _T("选择要批量转换文件所在的目录");
 bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
 bi.lpfn = NULL;
 bi.lParam = 0;
 if ((pidl = ::SHBrowseForFolder(&bi)) != NULL)//调用选择目录对话框
{
 if (::SHGetPathFromIDList(pidl, pszDirName))//获得所选择的目录
{
 file://设置选择的目录为当前目录,以便查找
 SetCurrentDirectory(pszDirName);
 file://定义一个查找
 CFileFind findch1;
 CString strconv;
 CString strsour;
if(findch1.FindFile("*.CH1"))//在当前目录进行查找
 {
CFile SourceFile;
CStdioFile TargetFile;
BOOL bfindresult;
do
{
 file://查找下一个符合条件的文件
 bfindresult= findch1.FindNextFile();
 file://获得查找到的文件名
 strsour=findch1.GetFilePath();
 strconv=strsour;
 file://把文件名转换为小写
 strconv.MakeLower();
 file://把*.ch1类型的文件转换为*.txt
 strconv.Replace(".ch1",".txt");
 file://打开*.ch1类型的文件作为源文件
 SourceFile.Open(strsour,CFile::modeRead);
 file://打开*.txt类型的文件作为目标文件
 TargetFile.Open(strconv,CFile::modeCreate|CFile::modeWrite);

 file://此处调用*.ch1类型的文件的解码函数
 file://此处调用转换成文本文件的函数
 file://文件使用完毕,要关闭
 SourceFile.Close();
 TargetFile.Close();
}while(bfindresult);
 MessageBox("转换完毕!","转换完毕!",MB_OK);
}
else
 {
MessageBox("没找到CH1文件","没找到",MB_OK);
 }
findch1.Close();//关闭这个搜索
 }
pMalloc->Free(pidl);//释放使用完的资源
}
 pMalloc->Release();//释放使用完的资源
}
 }

编译并运行程序,选择“文件”菜单下的“转换”命令, 选择一个目录就完成了对此目录下所有具有.ch1扩展名的文件的转换工作。

三、结论

本程序利用了Windows95/98/2000下的shell扩展功能,实现了对一个用户指定目录的拾取,再利用MFC的CfileFind类,来检索出所有想要转换的源文件,最后通过编码转换把源文件内容输出到指定类型的目标文件。这个方法也适合于要大量在不同格式的文件之间进行转换的工作,如图形文件、声音文件等的转换。

【相关文章】

【责任编辑:火凤凰 TEL:(010)68476606-8007】

专题
VC++基础开发专题
赛门铁克诺顿误杀Windows系统文件 导致百万系统崩溃
初探敏捷开发
WCF开发基础
体验Visual Studio 2008的魅力
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看81024次)
·UML类图详解 (查看72498次)
·C++是垃圾语言?! (查看42631次)
·C#技术开发指南 (查看40232次)
·UML统一建模语言 (查看39205次)
·Java编程开发手册 (1198个砖)
·Java基础教程 (431个砖)
·C#技术开发指南 (311个砖)
·.NET开发手册 (254个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (658个好)
·Java基础教程 (578个好)
·.NET开发手册 (282个好)
·PB开发教程 (213个好)
·Delphi开发技术手册 (200个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。