如何限制文件保存对话框的文件类型和名称?
比如,我想文件默认保存为a.b,并且,对话框里默认显示的都是.b类型的文件列表。
谢谢!

解决方案 »

  1.   

    CFileDialog fileDlg (TRUE, "b", "*.b",
          OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);
      

  2.   

    CFileDialog文件选择对话框的使用:
    首先构造一个对象并提供相应的参数,构造函数原型如下:
    CFileDialog::CFileDialog(
    BOOL bOpenFileDialog, //为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框
    LPCTSTR lpszDefExt = NULL, //默认的文件扩展名
    LPCTSTR lpszFileName = NULL, //默认的文件名
    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, //设定风格
    LPCTSTR lpszFilter = NULL, //列出可供选择的文件类型和相应的扩展名
    CWnd* pParentWnd = NULL //父窗口句柄指针
    );
     
    LPCTSTR lpszFilter 参数格式如:"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc;*.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。
      

  3.   

    例子:
    CFileDialog outDlg(FALSE, NULL, NULL, NULL, _T("自定义文件类型 (*.xxx)|*.xxx|所有文件 (*.*)|*.*||"), NULL);
    //设定保存对话框标题
    outDlg.m_ofn.lpstrTitle = _T("保存自定义文件");
    //使用自定义的文件名缓存
    outDlg.m_ofn.lpstrFile = fileBuffer;
    //设定保存文件的默认后缀,如果自己有输入后缀,则时候输入的后缀
    outDlg.m_ofn.lpstrDefExt = "xxx";
    //设定缓存大小
    outDlg.m_ofn.nMaxFile = 5000;
    //显示对话框
    if(outDlg.DoModal() == IDOK)
    ...