MFC程式對檔案的處理方法

2021-06-23 08:57:31 字數 2254 閱讀 6241

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

1.cfiledialog的應用www.111ce.com

格式如下:

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則顯www.111ti.com示儲存對話檔案對話方塊。 

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)檔案型別說明和副檔名間用 | 分隔,同種類www.555nu.com型檔案的副檔名間可以用 ; 分割,每種檔案型別間用 | 分隔,末尾用 || 指明,否則會造成亂碼

獲取儲存的檔名稱:

cstring cfiledialog::getpathname( ) 得到完整的檔名,包括目錄名和副檔名

cstring cfiledialog::getfilename( ) 得到完整的檔名

cstring cfiledialog::getextname( ) 得到完整的副檔名

cstring cfiledialog::getfiletitle ( ) 得到完整的檔名,包括目錄名和副檔名

position cfiledialog::getstartposition( ) 對於選擇了多個檔案的情況得到第乙個檔案位置

2.向.csv檔案寫入

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

這裡需要注意的是:

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

(2)當字元中出現中文後,導致中文後面的內容www.666di.com全部無法寫入到檔案中,這時需要在寫入檔案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對檔案的操作

cfile的派生類cstdiofile提供了對檔案進行流式的操作功能。其中函式void cstdiofile writestring lpctstr lpsz 寫入乙個字串,需要給字串lpsz的末尾加上換行標誌 r n 函式bool cstdiofile readstring cstring rst...

MFC對檔案操作的支援 CFile 類

cfile類提供了沒有快取的二進位制格式的磁碟檔案輸入輸出功能。建構函式 cfile lpctstr lpszfilename,uint nopenflags lpszfilename 檔名 nopenflags 檔案訪問和共享的方式 經典取值 cfile modecreate cfile mode...

給MFC程式新增檔案拖放處理

程式支援檔案拖放會使程式使用起來更加方便。當我們從shell window的檔案瀏覽器 中拖入乙個檔案到應用程式視窗時,windows會發生乙個訊息wm dropfiles給程式,支援檔案拖放操作的本質就是程式要適當地處理這個訊息。並不是所有程式都可以接受檔案拖放訊息,只有具有ws ex accep...