MFC程式對檔案的處理方法_C 語言

來源:互聯網
上載者:User

對檔案的處理是MFC程式設計中非常常見的應用。本文就以執行個體形式做一簡單敘述。具體方法如下:

1.CFileDialog的應用

格式如下:

CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL ); 

具體參數解釋如下:

bOpenFileDialog 為TRUE則顯示開啟對話方塊,為FALSE則顯示儲存對話檔案對話方塊。
lpszDefExt 指定預設的副檔名。
lpszFileName 指定預設的檔案名稱。
dwFlags 指明一些特定風格。
lpszFilter 是最重要的一個參數,它指明可供選擇的檔案類型和相應的副檔名。參數格式如:
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第一個參數為FALSE時,顯示儲存對話方塊,為TRUE時,顯示開啟對話方塊

(2)檔案類型說明和副檔名間用 | 分隔,同種類型檔案的副檔名間可以用 ; 分割,每種檔案類型間用 | 分隔,末尾用 || 指明,否則會造成亂碼

擷取儲存的檔案名稱:

CString CFileDialog::GetPathName( ) 得到完整的檔案名稱,包括目錄名和副檔名

CString CFileDialog::GetFileName( ) 得到完整的檔案名稱

CString CFileDialog::GetExtName( ) 得到完整的副檔名

CString CFileDialog::GetFileTitle ( ) 得到完整的檔案名稱,包括目錄名和副檔名

POSITION CFileDialog::GetStartPosition( ) 對於選擇了多個檔案的情況得到第一個檔案位置

2.向.CSV檔案寫入

由於向.CSV檔案中寫入的內容開啟時是以表格的形式展現,所以在大多數以結構體儲存到檔案中,以檔案的形式查看內容時比較常用。

這裡需要注意的是:

(1)如果像一般檔案那樣寫入,查看檔案時很明顯都是以雙位元組存入的,導致查看問題,所以我在這個地方使用CStdioFilel類,最後可以使用WriteString()將字元寫入到檔案中

(2)當字元中出現中文後,導致中文後面的內容全部無法寫入到檔案中,這時需要在寫入檔案WriteString()之前加一句setlocale( LC_CTYPE, "chs" );

(3)當一個表格中字元完成後,需要在字串後面添加‘,',需要換行時,需要在字串後面加上‘\r\n';

例如:

strTemp.Format(_T("%s,"),lvcol.pszText);strTemp.Format(_T("%s\r\n"),lvcol.pszText);

(4)一般情況下,使用CString將要寫入檔案中的內容全部儲存後,在一起寫入檔案;

具體代碼如下:

CString strEx; strEx += strTemp;

希望本文所述執行個體對大家的MFC程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.