MFC程序?qū)ξ募奶幚矸椒?/h1>
更新時(shí)間:2014年08月23日 15:11:41 投稿:shichen2014
這篇文章主要介紹了MFC程序?qū)ξ募奶幚矸椒?需要的朋友可以參考下
對(duì)文件的處理是MFC程序設(shè)計(jì)中非常常見(jiàn)的應(yīng)用。本文就以實(shí)例形式做一簡(jiǎn)單敘述。具體方法如下:
1.CFileDialog的應(yīng)用
格式如下:
CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
具體參數(shù)解釋如下:
bOpenFileDialog 為T(mén)RUE則顯示打開(kāi)對(duì)話(huà)框,為FALSE則顯示保存對(duì)話(huà)文件對(duì)話(huà)框。
lpszDefExt 指定默認(rèn)的文件擴(kuò)展名。
lpszFileName 指定默認(rèn)的文件名。
dwFlags 指明一些特定風(fēng)格。
lpszFilter 是最重要的一個(gè)參數(shù),它指明可供選擇的文件類(lèi)型和相應(yīng)的擴(kuò)展名。參數(shù)格式如:
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第一個(gè)參數(shù)為FALSE時(shí),顯示保存對(duì)話(huà)框,為T(mén)RUE時(shí),顯示打開(kāi)對(duì)話(huà)框
(2)文件類(lèi)型說(shuō)明和擴(kuò)展名間用 | 分隔,同種類(lèi)型文件的擴(kuò)展名間可以用 ; 分割,每種文件類(lèi)型間用 | 分隔,末尾用 || 指明,否則會(huì)造成亂碼
獲取保存的文件名稱(chēng):
CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目錄名和擴(kuò)展名
CString CFileDialog::GetFileName( ) 得到完整的文件名
CString CFileDialog::GetExtName( ) 得到完整的文件擴(kuò)展名
CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,包括目錄名和擴(kuò)展名
POSITION CFileDialog::GetStartPosition( ) 對(duì)于選擇了多個(gè)文件的情況得到第一個(gè)文件位置
2.向.CSV文件寫(xiě)入
由于向.CSV文件中寫(xiě)入的內(nèi)容打開(kāi)時(shí)是以表格的形式展現(xiàn),所以在大多數(shù)以結(jié)構(gòu)體保存到文件中,以文件的形式查看內(nèi)容時(shí)比較常用。
這里需要注意的是:
(1)如果像一般文件那樣寫(xiě)入,查看文件時(shí)很明顯都是以雙字節(jié)存入的,導(dǎo)致查看問(wèn)題,所以我在這個(gè)地方使用CStdioFilel類(lèi),最后可以使用WriteString()將字符寫(xiě)入到文件中
(2)當(dāng)字符中出現(xiàn)中文后,導(dǎo)致中文后面的內(nèi)容全部無(wú)法寫(xiě)入到文件中,這時(shí)需要在寫(xiě)入文件WriteString()之前加一句setlocale( LC_CTYPE, "chs" );
(3)當(dāng)一個(gè)表格中字符完成后,需要在字符串后面添加‘,',需要換行時(shí),需要在字符串后面加上‘\r\n';
例如:
strTemp.Format(_T("%s,"),lvcol.pszText);
strTemp.Format(_T("%s\r\n"),lvcol.pszText);
(4)一般情況下,使用CString將要寫(xiě)入文件中的內(nèi)容全部保存后,在一起寫(xiě)入文件;
具體代碼如下:
CString strEx;
strEx += strTemp;
希望本文所述實(shí)例對(duì)大家的MFC程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- MFC對(duì)話(huà)框中添加狀態(tài)欄的方法
- MFC對(duì)話(huà)框自定義消息映射的方法
- C++ 關(guān)于MFC多線(xiàn)程編程的注意事項(xiàng)
- C++ 關(guān)于MFC List Control 控件的總結(jié)
- MFC程序設(shè)計(jì)常用技巧匯總
- MFC創(chuàng)建右鍵彈出菜單的方法
- MFC設(shè)置對(duì)話(huà)框焦點(diǎn)的方法簡(jiǎn)述
- MFC擴(kuò)展DLL中導(dǎo)出類(lèi)和對(duì)話(huà)框的實(shí)現(xiàn)方法
- MFC中動(dòng)態(tài)創(chuàng)建控件以及事件響應(yīng)實(shí)現(xiàn)方法
- MFC之ComboBox控件用法實(shí)例教程
- MFC實(shí)現(xiàn)在文件尾追加數(shù)據(jù)的方法
相關(guān)文章
-
詳解C++循環(huán)創(chuàng)建多級(jí)目錄及判斷目錄是否存在的方法
這篇文章主要介紹了C++循環(huán)創(chuàng)建多級(jí)目錄及判斷目錄是否存在的方法,文中代碼有一個(gè)針對(duì)各種系統(tǒng)進(jìn)行判斷來(lái)加載不同頭文件的方法,需要的朋友可以參考下 2016-03-03
-
C++高并發(fā)內(nèi)存池的整體設(shè)計(jì)和實(shí)現(xiàn)思路
這篇文章主要介紹了C++高并發(fā)內(nèi)存池的整體設(shè)計(jì)和實(shí)現(xiàn)思路詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下 2021-07-07
-
C++ Boost PropertyTree示例超詳細(xì)講解
Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱(chēng)。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱(chēng)
2022-11-11
-
一文帶你了解Qt多線(xiàn)程的實(shí)現(xiàn)方式
這篇文章主要為大家詳細(xì)介紹了Qt多線(xiàn)程的實(shí)現(xiàn)方式的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下 2025-01-01
-
C語(yǔ)言實(shí)現(xiàn)文件讀寫(xiě)功能流程
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)文件讀寫(xiě),文件是一段數(shù)據(jù)的集合,這些數(shù)據(jù)可以是有規(guī)則的,也可以是無(wú)序的集合。在stdio.h有一個(gè)非常重要的東西,文件指針,每個(gè)文件都會(huì)在內(nèi)存中開(kāi)辟一塊空間,用于存放文件的相關(guān)信息 2022-12-12
-
C++使用遞歸方法求n階勒讓德多項(xiàng)式完整實(shí)例
這篇文章主要介紹了C++使用遞歸方法求n階勒讓德多項(xiàng)式,涉及C++遞歸算法與浮點(diǎn)數(shù)運(yùn)算的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下 2016-05-05
-
C語(yǔ)言實(shí)現(xiàn)病例管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)病例管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 2019-01-01
最新評(píng)論
對(duì)文件的處理是MFC程序設(shè)計(jì)中非常常見(jiàn)的應(yīng)用。本文就以實(shí)例形式做一簡(jiǎn)單敘述。具體方法如下:
1.CFileDialog的應(yīng)用
格式如下:
CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
具體參數(shù)解釋如下:
bOpenFileDialog 為T(mén)RUE則顯示打開(kāi)對(duì)話(huà)框,為FALSE則顯示保存對(duì)話(huà)文件對(duì)話(huà)框。
lpszDefExt 指定默認(rèn)的文件擴(kuò)展名。
lpszFileName 指定默認(rèn)的文件名。
dwFlags 指明一些特定風(fēng)格。
lpszFilter 是最重要的一個(gè)參數(shù),它指明可供選擇的文件類(lèi)型和相應(yīng)的擴(kuò)展名。參數(shù)格式如:
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第一個(gè)參數(shù)為FALSE時(shí),顯示保存對(duì)話(huà)框,為T(mén)RUE時(shí),顯示打開(kāi)對(duì)話(huà)框
(2)文件類(lèi)型說(shuō)明和擴(kuò)展名間用 | 分隔,同種類(lèi)型文件的擴(kuò)展名間可以用 ; 分割,每種文件類(lèi)型間用 | 分隔,末尾用 || 指明,否則會(huì)造成亂碼
獲取保存的文件名稱(chēng):
CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目錄名和擴(kuò)展名
CString CFileDialog::GetFileName( ) 得到完整的文件名
CString CFileDialog::GetExtName( ) 得到完整的文件擴(kuò)展名
CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,包括目錄名和擴(kuò)展名
POSITION CFileDialog::GetStartPosition( ) 對(duì)于選擇了多個(gè)文件的情況得到第一個(gè)文件位置
2.向.CSV文件寫(xiě)入
由于向.CSV文件中寫(xiě)入的內(nèi)容打開(kāi)時(shí)是以表格的形式展現(xiàn),所以在大多數(shù)以結(jié)構(gòu)體保存到文件中,以文件的形式查看內(nèi)容時(shí)比較常用。
這里需要注意的是:
(1)如果像一般文件那樣寫(xiě)入,查看文件時(shí)很明顯都是以雙字節(jié)存入的,導(dǎo)致查看問(wèn)題,所以我在這個(gè)地方使用CStdioFilel類(lèi),最后可以使用WriteString()將字符寫(xiě)入到文件中
(2)當(dāng)字符中出現(xiàn)中文后,導(dǎo)致中文后面的內(nèi)容全部無(wú)法寫(xiě)入到文件中,這時(shí)需要在寫(xiě)入文件WriteString()之前加一句setlocale( LC_CTYPE, "chs" );
(3)當(dāng)一個(gè)表格中字符完成后,需要在字符串后面添加‘,',需要換行時(shí),需要在字符串后面加上‘\r\n';
例如:
strTemp.Format(_T("%s,"),lvcol.pszText);
strTemp.Format(_T("%s\r\n"),lvcol.pszText);
(4)一般情況下,使用CString將要寫(xiě)入文件中的內(nèi)容全部保存后,在一起寫(xiě)入文件;
具體代碼如下:
CString strEx; strEx += strTemp;
希望本文所述實(shí)例對(duì)大家的MFC程序設(shè)計(jì)有所幫助。
- MFC對(duì)話(huà)框中添加狀態(tài)欄的方法
- MFC對(duì)話(huà)框自定義消息映射的方法
- C++ 關(guān)于MFC多線(xiàn)程編程的注意事項(xiàng)
- C++ 關(guān)于MFC List Control 控件的總結(jié)
- MFC程序設(shè)計(jì)常用技巧匯總
- MFC創(chuàng)建右鍵彈出菜單的方法
- MFC設(shè)置對(duì)話(huà)框焦點(diǎn)的方法簡(jiǎn)述
- MFC擴(kuò)展DLL中導(dǎo)出類(lèi)和對(duì)話(huà)框的實(shí)現(xiàn)方法
- MFC中動(dòng)態(tài)創(chuàng)建控件以及事件響應(yīng)實(shí)現(xiàn)方法
- MFC之ComboBox控件用法實(shí)例教程
- MFC實(shí)現(xiàn)在文件尾追加數(shù)據(jù)的方法
相關(guān)文章
詳解C++循環(huán)創(chuàng)建多級(jí)目錄及判斷目錄是否存在的方法
這篇文章主要介紹了C++循環(huán)創(chuàng)建多級(jí)目錄及判斷目錄是否存在的方法,文中代碼有一個(gè)針對(duì)各種系統(tǒng)進(jìn)行判斷來(lái)加載不同頭文件的方法,需要的朋友可以參考下2016-03-03
C++高并發(fā)內(nèi)存池的整體設(shè)計(jì)和實(shí)現(xiàn)思路
這篇文章主要介紹了C++高并發(fā)內(nèi)存池的整體設(shè)計(jì)和實(shí)現(xiàn)思路詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07
C++ Boost PropertyTree示例超詳細(xì)講解
Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱(chēng)。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱(chēng)2022-11-11
一文帶你了解Qt多線(xiàn)程的實(shí)現(xiàn)方式
這篇文章主要為大家詳細(xì)介紹了Qt多線(xiàn)程的實(shí)現(xiàn)方式的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-01-01
C語(yǔ)言實(shí)現(xiàn)文件讀寫(xiě)功能流程
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)文件讀寫(xiě),文件是一段數(shù)據(jù)的集合,這些數(shù)據(jù)可以是有規(guī)則的,也可以是無(wú)序的集合。在stdio.h有一個(gè)非常重要的東西,文件指針,每個(gè)文件都會(huì)在內(nèi)存中開(kāi)辟一塊空間,用于存放文件的相關(guān)信息2022-12-12
C++使用遞歸方法求n階勒讓德多項(xiàng)式完整實(shí)例
這篇文章主要介紹了C++使用遞歸方法求n階勒讓德多項(xiàng)式,涉及C++遞歸算法與浮點(diǎn)數(shù)運(yùn)算的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05
C語(yǔ)言實(shí)現(xiàn)病例管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)病例管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01

