文件的保存

一  、VC++, MFC中實現選擇文件夾,選擇文件對話框,確定當前工作目錄2008-03-22 21:03//選擇目錄
void CTestDlg::OnOK()
{
// BROWSEINFO 結構
////////////////////////////////////
// typedef struct _browseinfo {
//   HWND hwndOwner;
//   LPCITEMIDLIST pidlRoot;
//   LPSTR pszDisplayName;
//   LPCSTR lpszTitle;
//   UINT ulFlags;
//   BFFCALLBACK lpfn;
//   LPARAM lParam;
//   int iImage;
//   } BROWSEINFO;
///////////////////////////////////


CString sFolderPath;
BROWSEINFO bi;
char Buffer[MAX_PATH];
//初始化入口參數bi開始
bi.hwndOwner = NULL;
bi.pidlRoot =NULL;//初始化制定的root目錄很不容易,
bi.pszDisplayName = Buffer;//此參數如爲NULL則不能顯示對話框
bi.lpszTitle = "修改接收路徑";
//bi.ulFlags = BIF_BROWSEINCLUDEFILES;//包括文件
bi.ulFlags = BIF_EDITBOX;//包括文件

bi.lpfn = NULL;
bi.iImage=IDR_MAINFRAME;
//初始化入口參數bi結束
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//調用顯示選擇對話框
if(pIDList)
{
   SHGetPathFromIDList(pIDList, Buffer);
   //取得文件夾路徑到Buffer裏
   sFolderPath = Buffer;//將路徑保存在一個CString對象裏
}
LPMALLOC lpMalloc;
if(FAILED(SHGetMalloc(&lpMalloc))) return;
//釋放內存
lpMalloc->Free(pIDList);
lpMalloc->Release();
MessageBox(sFolderPath,"Title",MB_OK);
TRACE("\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
TRACE(sFolderPath);
TRACE("\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
}


//打開、保存文件
void CTestDlg::OnButton1()
{
   
// 獲取當前工作路徑
CString strAppName;//當前工作目錄
::GetModuleFileName(NULL, strAppName.GetBuffer(_MAX_PATH), _MAX_PATH);
strAppName.ReleaseBuffer();
int nPos = strAppName.ReverseFind('\\');
strAppName = strAppName.Left(nPos + 1);

    // AfxMessageBox(strAppName);


// 文件擴展名過濾器
LPCTSTR szFilter = "Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";

    //初始目錄是c:\windows, 初始選擇的文件名是test,初始後綴過濾器是 Chart Files (*.xlc)
//CFileDialog dlg(TRUE,NULL ,"C:\\windows\\test" ,OFN_ENABLESIZING ,szFilter,NULL); // 打開用TRUE, 保存用 FALSE

//第一個參數變成FALSE,就是保存文件,初始目錄是當前工作目錄, 初始選擇的文件名是file,初始後綴過濾器是 Chart Files (*.xlc)
CFileDialog dlg(FALSE,NULL ,strAppName+"file",OFN_ENABLESIZING ,szFilter,NULL); // 打開用TRUE, 保存用 FALSE
   
   

if(dlg.DoModal() == IDOK)
{
   CString strFile = dlg.GetPathName(); // 全路徑
   MessageBox(strFile,"Title",MB_OK);
   TRACE("\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
   TRACE(strFile);
   TRACE("\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
}


}
 

 

二、自動保存在指定路徑

 

void CSaveDlg::OnSave()
{
 CString strText(_T("")); 
 GetDlgItemText(IDC_EDIT1,strText);//  IDC_EDIT1爲EDIT BOX的ID
 try
 {
  CStdioFile file;
  file.Open(_T("D:\\abc.txt"),CFile::modeCreate|CFile::modeWrite
   |CFile::typeText);
  file.WriteString(strText);
  file.Close();

 }
 catch(CFileException *e)
 {
  e->ReportError();
  e->Delete();

 }
}

 

發佈了16 篇原創文章 · 獲贊 8 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章