版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、VC6.0編的“文件讀寫”的兩種方式(MFC和基于對(duì)話框)軟件實(shí)驗(yàn)三:基于對(duì)話框的MFC程序?qū)崿F(xiàn)文件讀寫操作實(shí)例一:操作步驟:1、 新建“MFC APPWIZARD(EXE)”,選擇文件路徑,輸入文件名,選擇應(yīng)用程序類型為“基本對(duì)話框”,按上圖添加各控件2、 按下表修改各控件的ID號(hào),添加成員函數(shù)和消息函數(shù)控件標(biāo)題ID號(hào)成員變量變量類型消息函數(shù)編輯框(寫入的文本)IDC_WRITEm_WriteStringCString編輯框(文件路徑)IDC_FILEPATHm_FilePathCString編輯框(從文件中讀入的文本)IDC_READm_strReadCstring下壓按鈕寫入到文件IDC
2、_BUTTON_WRITEOnButtonWrite下壓按鈕查看文件路徑IDC_BUTTON_FILEPATHOnButtonFilepath下壓按鈕從文件讀入的文本IDC_BUTTON_READOnButtonRead給控件添加成員變量的方法為:按ctrl+w,進(jìn)入MFC ClassWizard,選中要添加成員變量的控件的ID號(hào),選擇mumber variables面板,單擊add variable按鈕,添加成員變量,并選擇變量類型。3、 寫入文件1)在“基于對(duì)話框的文件讀寫Dlg.h”文件中定義變量(粗體字為此處添加的代碼)class CMyDlg : public CDialog/ Co
3、nstructionpublic:/定義變量 CString strFileName;/文件名 CString strFilePath;/文件路徑BOOL IsTextFile(CString& rFile);/判斷文件類型是否正確CMyDlg(CWnd* pParent = NULL);/ standard constructor2)雙擊下壓按鈕“寫入文件”,編寫“寫入文件”的消息處理函數(shù)void CMyDlg:OnButtonWrite() /單擊“寫入到文件”按鈕/ TODO: Add your control notification handler code hereUpda
4、teData(true);CFile file;CFileDialog filedlg(0,/1-文件打開(kāi),0-文件另存為".txt|*.*",NULL,OFN_OVERWRITEPROMPT,"文本文件(*.txt)|*.txt|All Files(*.*)|*.*|",NULL);if(filedlg.DoModal()=IDOK)strFileName=filedlg.GetFileName();/獲得文件名if(strFileName="")AfxMessageBox("請(qǐng)輸入文件名");return;fi
5、le.Open(strFileName,CFile:modeCreate|CFile:modeWrite);/將數(shù)據(jù)寫入文件int length=m_WriteString.GetLength();/獲取文件長(zhǎng)度 file.Write(LPCTSTR)m_WriteString,length);/獲取有關(guān)文件的信息CStringAfxMessageBox("已保存到文件:"+strFileName+"!");/保存結(jié)束提示strFilePath=file.GetFilePath();/獲得文件的路徑file.Close();/關(guān)閉文件4、 查看文件路徑雙
6、擊下壓按鈕“查看文件路徑”,編寫“查看文件路徑”的消息處理函數(shù)void CMyDlg:OnButtonFilepath() /查看文件路徑/ TODO: Add your control notification handler code herem_FilePath=strFilePath;UpdateData(false);5、 讀入文件1) 定義判斷文件類型是否正確的函數(shù)(粗體字為此處添加的代碼)class CMyDlg : public CDialog/ Constructionpublic:/定義變量 CString strFileName;/文件名 CString strFileP
7、ath;/文件路徑BOOL IsTextFile(CString& rFile);/判斷文件類型是否正確CMyDlg(CWnd* pParent = NULL);/ standard constructor2) 編寫IsTextFile函數(shù)BOOL CMyDlg:IsTextFile(CString &rFile)/判斷文件類型是否正確CStringList strList;CString str(rFile);strList.AddHead(".TXT");strList.AddHead(".SYS");strList.AddHead(
8、".BAT");strList.AddHead(".DAT");str=str.Right(4);/文件名的右邊四位字符str.MakeUpper();/轉(zhuǎn)換成大寫return(strList.Find(str)?TRUE:FALSE;3) 在“基于對(duì)話框的文件讀寫Dlg.cpp”文件開(kāi)頭添加頭文件#include "fstream.h"/添加的頭文件4) 單擊下壓按鈕“讀入文件”,編寫下壓按鈕“讀入文件”的消息函數(shù)void CMyDlg:OnButtonRead() / TODO: Add your control notifica
9、tion handler code herefstream f1;/定義文件流對(duì)象char s200;CFileDialog filedlg(1,/1-文件打開(kāi),0-文件另存為".txt|*.*",NULL,OFN_OVERWRITEPROMPT,"文本文件(*.txt)|*.txt|All Files(*.*)|*.*|",NULL); if(filedlg.DoModal()=IDOK)UpdateData(true);strFileName=filedlg.GetFileName();/獲得文件名if(!IsTextFile(strFileName
10、)/判斷文件類型是否正確AfxMessageBox("文件類型不正確");return;f1.open(strFileName,ios:in|ios:nocreate);while(!f1.eof()f1.getline(s,255);m_strRead=m_strRead+"rn"+s;/添加文件中的文本到編輯框UpdateData(false);AfxMessageBox(strFileName+"文件讀入完畢");/保存結(jié)束提示f1.close();/關(guān)閉文件流6、 運(yùn)行程序1) 在寫入文件的編輯框中輸入內(nèi)容,單擊“寫入文件”按
11、鈕,并可選擇路徑保存該文件。2) 單擊“查看文件路徑”,可查看該文件所要路徑。3) 單擊“從文件讀入”按鈕,可選擇一個(gè)文件并打開(kāi),并把文件內(nèi)容顯示在從文件讀入的文本編輯框中。 實(shí)例二:(老師的例子)操作步驟:1、 新建“MFC APPWIZARD(EXE)”,選擇文件路徑,輸入文件名,選擇應(yīng)用程序類型為“基本對(duì)話框”,按上圖添加各控件2、 修改各控件的ID號(hào),為各控件添加成員變量和消息函數(shù)控件標(biāo)題ID號(hào)成員變量變量類型消息函數(shù)編輯框IDC_EDIT_FILEDATActrFileData按鈕ReadIDC_BTN_READ_FILEOnBtnReadFile()按鈕WriteIDC_BTN_W
12、RITE_FILEOnBtnWriteFile()給控件添加成員變量的方法為:按ctrl+w,進(jìn)入MFC ClassWizard,選中要添加成員變量的控件的ID號(hào),選擇mumber variables面板,單擊add variable按鈕,添加成員變量,并選擇變量類型。3、雙擊按鈕“Read”,添加“Read”的消息函數(shù)void CMFCDlg:OnBtnReadFile() /讀文件/ TODO: Add your control notification handler code hereCFileDialog Filedlg( TRUE, "All file", &q
13、uot;*.*", OFN_HIDEREADONLY, "All File (*.*)");Filedlg.m_ofn.lpstrTitle = "打開(kāi)文件"CString m_strFileName;CString m_strFileExm;if( Filedlg.DoModal() != IDOK )return;elsem_strFileName = Filedlg.GetPathName(); /被打開(kāi)文件名 m_strFileExm = Filedlg.GetFileExt(); /被打開(kāi)文件擴(kuò)展名CFile cFile;CFileE
14、xception e;if ( cFile.Open( m_strFileName, CFile:modeReadWrite, &e ) )/ If open file successfulunsigned long lSize = cFile.GetLength ();char *pBuf = new charlSize+1;if ( !pBuf ) / Out of memoryreturn ;else / Alloc memory successcFile.ReadHuge ( pBuf, lSize ); *( pBuf + lSize ) = '0' ;m_c
15、trFileData.SetWindowText( pBuf );if ( pBuf ) / Release memory delete pBuf;cFile.Close ();/ Close file manually/ End of if ( cFile.Opne.)else TCHAR szCause255; CString strFormatted; e.GetErrorMessage( szCause, 255 ); strFormatted = _T("The data file could not be read because of this error: "
16、;); strFormatted += szCause; AfxMessageBox( strFormatted );return ;4、雙擊按鈕“Write”,添加“Write”的消息函數(shù)void CMFCDlg:OnBtnWriteFile() /寫文件/ TODO: Add your control notification handler code hereCFileDialog Filedlg( FALSE, "All file", "*.*", OFN_HIDEREADONLY, "All File (*.*)");Fil
17、edlg.m_ofn.lpstrTitle = "寫文件"CString m_strFileName;CString m_strFileExm;CString m_strFileData;CFile cFile;CFileException e; unsigned long lSize;if( Filedlg.DoModal() != IDOK )return;elsem_strFileName = Filedlg.GetPathName(); /被打開(kāi)文件名 m_strFileExm = Filedlg.GetFileExt(); /被打開(kāi)文件擴(kuò)展名if ( cFile.
18、Open( m_strFileName, CFile:modeCreate | CFile:modeWrite, &e ) )/ If open file successfulm_ctrFileData.GetWindowText( m_strFileData );lSize = m_strFileData.GetLength();char *pBuf = new charlSize+1;if ( !pBuf ) / Out of memorycFile.Close ();return ;else / Alloc memory successstrcpy( pBuf, (char *)(LPCSTR)m_strFileData ); *( pBuf + lSize ) = '0' ;cFile.WriteHuge( pBuf,lSize );if ( pBuf ) / Release memory delete pBuf;cFile.Close ();/ Close file manually/ End of if ( cFile.Opne.)else TCHAR szCau
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村房屋購(gòu)買合同范文
- 個(gè)體戶車輛轉(zhuǎn)讓協(xié)議
- 電腦租賃合同范本2024年
- 2024年鉆機(jī)購(gòu)銷合同國(guó)際貿(mào)易合同
- 合作伙伴協(xié)議:有限合伙企業(yè)合作合同
- 短期運(yùn)輸合同書(shū)
- 勞務(wù)協(xié)議書(shū)范本中的風(fēng)險(xiǎn)防范
- 土地買賣合同范本2024年
- 校園意外傷害賠償協(xié)議
- 專業(yè)房屋建筑施工合同范本
- MOOC 戰(zhàn)略推演:企業(yè)致勝七步法-中南大學(xué) 中國(guó)大學(xué)慕課答案
- 某尾礦庫(kù)應(yīng)急預(yù)案
- 2022-2023學(xué)年北京市第四中學(xué)七年級(jí)上學(xué)期期中考試地理試卷含詳解
- 2021-2022學(xué)年河北省唐山市一中高二年級(jí)上冊(cè)期中考試數(shù)學(xué)試題
- 人教版小學(xué)數(shù)學(xué)三年級(jí)下冊(cè)電子課本-課件
- (高清版)TDT 1012-2016 土地整治項(xiàng)目規(guī)劃設(shè)計(jì)規(guī)范
- 2024廣西能源集團(tuán)有限公司社會(huì)招聘筆試參考題庫(kù)附帶答案詳解
- 《先進(jìn)制造技術(shù)》教案
- 第三單元 雪域天音 -熱巴舞曲 課件 2023-2024學(xué)年人音版初中音樂(lè)八年級(jí)上冊(cè)
- EPC項(xiàng)目投標(biāo)人承包人工程經(jīng)濟(jì)的合理性分析、評(píng)價(jià)
- 美陳策劃方案
評(píng)論
0/150
提交評(píng)論