王朝网络
分享
 
 
 

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

王朝vc·作者佚名  2007-06-13
宽屏版  字体: |||超大  

硬件/系统

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

一。前言

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

全部代码用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类,来检索出所有想要转换的源文件,最后通过编码转换把源文件内容输出到指定类型的目标文件。这个方法也适合于要大量在不同格式的文件之间进行转换的工作,如图形文件、声音文件等的转换。希望有兴趣的朋友和我交流讨论。

CSDN VC编程经验总结

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有