1. 程式人生 > >基於MFC儲存和開啟檔案

基於MFC儲存和開啟檔案

  1. 在C語言中用FILE結構體來對檔案進行操作,比如fprintf格式化寫入檔案
  2. 在C++中利用CStdioFile類,它是繼承於CFile類的。
    void CTestDlgDlg::OnBnClickedSave()
    {
    	CStdioFile file;				//繼承於CFile類
    	BOOL isOpen = FALSE;			//是否開啟(否則為儲存)  
    	CString defaultDir = L"";		//預設開啟的檔案路徑  
    	CString fileName = L"";         //預設開啟的檔名  
    	CString filter = L"檔案 (*.txt; *.ppt; *.xls)|*.txt;*.ppt;*.xls||";   //檔案過慮的型別  
    	CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filter, NULL);//利用CFileDialog類中建構函式對其引數進行初始化。
    	INT_PTR result = openFileDlg.DoModal();//當點選儲存時,模態對話方塊跳出,程式繼續執行。
    	CString filePath = defaultDir + "\\" + fileName;
    	CString str;
    	int *p = (int*)malloc(100 * sizeof(int));
    	for (int i = 0; i < 100; i++)
    	{
    		p[i] = i;
    	}
    	if (result == IDOK) {
    		filePath = openFileDlg.GetPathName();//得到檔案的絕對路徑
    		file.Open(filePath, CFile::modeCreate | CFile::modeWrite);	
    		for (int i = 0; i < 100; i++)
    		{
    			str.Format(_T("%d\n"),p[i]);
    			file.WriteString(str);
    		}
    		file.Flush();
    		file.Close();		
    	}	
    	CWnd::SetDlgItemTextW(IDC_EDIT_SRC, filePath);
    	//_T("")和L""兩種寫法。作用是讓你的程式支援Unicode編碼,
    	//因為Windows使用兩種字符集ANSI和UNICODE,前者就是通常使用的單位元組方式,但這種方式處理象中文這樣的雙位元組字元不方便,容易出現半個漢字的情況。而後者是雙位元組方式,方便處理雙位元組字元。
    	//_L不管你是以什麼方式編譯,一律以UNICODE方式儲存。
    }