?? visual c++實(shí)現(xiàn)文件間批量轉(zhuǎn)換功能.txt
字號(hào):
作者:skyhorsebj
email: XUEY@CIDC.COM.CN
日期:2001-7-3 18:07:19
全部代碼用Visual C++6.0在Windows95/98/2000下編譯通過。
首先用MFC AppWizard生成一個(gè)SDI風(fēng)格的應(yīng)用程序test,生成過程中全部使用缺省設(shè)置。
其次,利用資源編輯器,在主菜單“文件”下增加一個(gè)菜單項(xiàng)“轉(zhuǎn)換”,屬性為:
ID:ID_CONVERT
Caption: 轉(zhuǎn)換
Prompt: 在不同格式文件之間進(jìn)行轉(zhuǎn)換\n轉(zhuǎn)換文件
然后用“CTRL-W”熱鍵激活MFC ClassWizard,為CmainFrame類增加響應(yīng)ID_CONVERT消息的命令函數(shù)OnConvert()。加入轉(zhuǎn)換功能的代碼如下所示:
void CMainFrame::OnConvert()
{
LPMALLOC pMalloc;//利用shell擴(kuò)展功能
BROWSEINFO bi;
if (SUCCEEDED(SHGetMalloc(&pMalloc)))//為生成目錄選擇對(duì)話框分配自由內(nèi)存
{
ZeroMemory(&bi,sizeof(bi));//清零分配的空間
char pszDirName[MAX_PATH];//存放選擇的目錄名
LPITEMIDLIST pidl;
bi.hwndOwner = GetSafeHwnd();
bi.pidlRoot = NULL;
bi.pszDisplayName = pszDirName;
bi.lpszTitle = _T("選擇要批量轉(zhuǎn)換文件所在的目錄");
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
if ((pidl = ::SHBrowseForFolder(&bi)) != NULL)//調(diào)用選擇目錄對(duì)話框
{
if (::SHGetPathFromIDList(pidl, pszDirName))//獲得所選擇的目錄
{
file://設(shè)置選擇的目錄為當(dāng)前目錄,以便查找
SetCurrentDirectory(pszDirName);
file://定義一個(gè)查找
CFileFind findch1;
CString strconv;
CString strsour;
if(findch1.FindFile("*.CH1"))//在當(dāng)前目錄進(jìn)行查找
{
CFile SourceFile;
CStdioFile TargetFile;
BOOL bfindresult;
do
{
file://查找下一個(gè)符合條件的文件
bfindresult= findch1.FindNextFile();
file://獲得查找到的文件名
strsour=findch1.GetFilePath();
strconv=strsour;
file://把文件名轉(zhuǎn)換為小寫
strconv.MakeLower();
file://把*.ch1類型的文件轉(zhuǎn)換為*.txt
strconv.Replace(".ch1",".txt");
file://打開*.ch1類型的文件作為源文件
SourceFile.Open(strsour,CFile::modeRead);
file://打開*.txt類型的文件作為目標(biāo)文件
TargetFile.Open(strconv,CFile::modeCreate|CFile::modeWrite);
file://此處調(diào)用*.ch1類型的文件的解碼函數(shù)
file://此處調(diào)用轉(zhuǎn)換成文本文件的函數(shù)
file://文件使用完畢,要關(guān)閉
SourceFile.Close();
TargetFile.Close();
}while(bfindresult);
MessageBox("轉(zhuǎn)換完畢!","轉(zhuǎn)換完畢!",MB_OK);
}
else
{
MessageBox("沒找到CH1文件","沒找到",MB_OK);
}
findch1.Close();//關(guān)閉這個(gè)搜索
}
pMalloc->Free(pidl);//釋放使用完的資源
}
pMalloc->Release();//釋放使用完的資源
}
}
編譯并運(yùn)行程序,選擇“文件”菜單下的“轉(zhuǎn)換”命令, 選擇一個(gè)目錄就完成了對(duì)此目錄下所有具有.ch1擴(kuò)展名的文件的轉(zhuǎn)換工作。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -