MFC——文件打开和保存对话框(CFileDialog)

来源:互联网 发布:婴儿用品 知乎 编辑:程序博客网 时间:2024/06/16 12:38

最近要做一个文件打开和保存的对话框,现将相关的代码记录如下,用以备忘!

所用控件:

2个静态标签(Static Text):用以显示功能标签;

2个文本框(Edit):用以显示打开的文件路径全名要保存的文件路径全名,设置其Read Only属性为true将文本框设置为不可编辑;

2个按钮(Button):用以浏览文件;


打开文件对话框


CFileDialog打开的对话框


代码如下:(方法1)

[cpp] view plain copy
  1. //打开文件  
  2. void COpenSaveFileDialogDlg::OnBnClickedButtonOpen()  
  3. {  
  4.     BOOL isOpen = TRUE;     //是否打开(否则为保存)  
  5.     CString defaultDir = L"E:\\FileTest";   //默认打开的文件路径  
  6.     CString fileName = L"";         //默认打开的文件名  
  7.     CString filter = L"文件 (*.doc; *.ppt; *.xls)|*.doc;*.ppt;*.xls||";   //文件过虑的类型  
  8.     CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY|OFN_READONLY, filter, NULL);  
  9.     openFileDlg.GetOFN().lpstrInitialDir = L"E:\\FileTest\\test.doc";  
  10.     INT_PTR result = openFileDlg.DoModal();  
  11.    // CString filePath = defaultDir + L"\\test.doc"
  12.    CString filePath ;
  13.     if(result == IDOK) {  
  14.         filePath = openFileDlg.GetPathName();  
  15.     }  
  16.     CWnd::SetDlgItemTextW(IDC_EDIT_SRC, filePath);  
  17. }  
  18.   
  19. //保存文件  
  20. void COpenSaveFileDialogDlg::OnBnClickedButtonSave()  
  21. {  
  22.     BOOL isOpen = FALSE;        //是否打开(否则为保存)  
  23.     CString defaultDir = L"E:\\FileTest";   //默认打开的文件路径  
  24.     CString fileName = L"test.doc";         //默认打开的文件名  
  25.     CString filter = L"文件 (*.doc; *.ppt; *.xls)|*.doc;*.ppt;*.xls||";   //文件过虑的类型  
  26.     CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, filter, NULL);  
  27.     openFileDlg.GetOFN().lpstrInitialDir = L"E:\\FileTest\\test.doc";  
  28.     INT_PTR result = openFileDlg.DoModal();  
  29.     CString filePath = defaultDir + L"\\" + fileName;  
  30.     if(result == IDOK) {  
  31.         filePath = openFileDlg.GetPathName();  
  32.     }  
  33.     CWnd::SetDlgItemTextW(IDC_EDIT_DEST, filePath);  
  34. }  

代码:方法2

void CExample17Dlg::OnBnClickedOpenButton()   
{   
    // TODO: Add your control notification handler code here   
    // 设置过滤器   
    TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||");   
    // 构造打开文件对话框   
    CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);   
    CString strFilePath;   
   
    // 显示打开文件对话框   
    if (IDOK == fileDlg.DoModal())   
    {   
        // 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里   
        strFilePath = fileDlg.GetPathName();   
        SetDlgItemText(IDC_OPEN_EDIT, strFilePath);   
    }   
}   
   
   
void CExample17Dlg::OnBnClickedSaveButton()   
{   
    // TODO: Add your control notification handler code here   
    // 设置过滤器   
    TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc|所有文件(*.*)|*.*||");   
    // 构造保存文件对话框   
    CFileDialog fileDlg(FALSE, _T("doc"), _T("my"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
 szFilter, this);   
    CString strFilePath;   
   
    // 显示保存文件对话框   
    if (IDOK == fileDlg.DoModal())   
    {   
        // 如果点击了文件对话框上的“保存”按钮,则将选择的文件路径显示到编辑框里   
        strFilePath = fileDlg.GetPathName();   
        SetDlgItemText(IDC_SAVE_EDIT, strFilePath);   
    }   
}