admin 发表于 2024-10-3 17:24:03

CFileDialog

    // 打开一个txt
    DWORD dwFlags = 0;//OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
    //一般“文本文件*.txt|*.txt”为一组,最后加上 "||"
    const TCHAR* filter = _T("文本文件*.txt|*.txt|word文档*.doc|*.doc|所有文件(*.*)|*.*||");
    CFileDialog dlg(TRUE, _T("txt"), NULL, dwFlags, filter);
    //打开对话框的标题
    dlg.m_ofn.lpstrTitle = _T("自定义标题");
    if (IDOK == dlg.DoModal())
    {
            //文件全路径D:\test\a.txt
      CString filepath = dlg.GetPathName();
      //folder文件夹路径 D:\text
      CString folder = dlg.GetFolderPath();
      //文件--包括名+后缀   a.txt
      CString filename = dlg.GetFileName();
      //后缀名txt
      CString extname = dlg.GetFileExt();
      //文件名a
      CString title = dlg.GetFileTitle();      
    }



过滤的语法
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||"
文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明
文件保存
文件保存的几种方式:

选中一个txt文档,然后保存,会有替换的提示
输入一个名称,比如 a, 然后注意无后缀
输入一个名称,如 a.txt ,有后缀

    //保存一个txt
    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
    const TCHAR* filter = _T("文本文件*.txt|*.txt||");
    CFileDialog dlg(FALSE, _T("txt"), NULL, dwFlags, filter);
    dlg.m_ofn.lpstrTitle = _T("自定义标题");
    if (IDOK == dlg.DoModal())
    {
      CString filepath = dlg.GetPathName();
      CString filename = dlg.GetFileName();
      CString extname = dlg.GetFileExt();
      CString title = dlg.GetFileTitle();
      CString folder = dlg.GetFolderPath();
    }


新建文件

    //新建文件
    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
    const TCHAR* filter = _T("文本文件*.txt|*.txt|json文件*.json|*.json||");
    CFileDialog dlg(FALSE, NULL, NULL, dwFlags, filter);
    dlg.m_ofn.lpstrTitle = _T("新建文件");
    if (IDOK != dlg.DoModal())
      return;
    CString filepath = dlg.GetPathName();
    CString filename = dlg.GetFileName();
    CString extname = dlg.GetFileExt();
    CString title = dlg.GetFileTitle();
    CString folder = dlg.GetFolderPath();
    //判断有没有输入后缀名
    if (extname.IsEmpty())
    {
      //下拉框是哪一个 0--txt1--json
      DWORD filterIndex = dlg.m_ofn.nFilterIndex;
      switch (filterIndex)
      {
      case 1:
            extname = _T("txt");
            filename += _T(".txt");
            filepath += _T(".txt");
            break;
      case 2:
            extname = _T("json");
            filename += _T(".json");
            filepath += _T(".json");
            break;
      default:
            break;
      }
    }
页: [1]
查看完整版本: CFileDialog