向“打开文件”对话框添加筛选器






4.43/5 (3投票s)
1999年11月25日
1分钟阅读

181362

3442
为“打开文件”对话框添加筛选器。
引言
MFC 的 CFileDialog
类仅提供一个默认文件扩展名的配置,如果未提供扩展名,则将其添加到文件名中。文件导出功能处理可能存在许多不同的文件扩展名,这些扩展名必须根据所选的文件类型进行添加。CFileExportDialog
类就是这样做的。此外,当用户从组合框中选择另一种文件类型时,文件名编辑控件中的扩展名会自动更改。
对话框的使用很简单,因为它模仿了父类 CFileDialog
的使用方式。除了构造函数和析构函数之外,只有一个额外的公共函数,即 GetFilterIndex()
,它返回所选文件类型的索引。如果一个扩展名由两种或多种文件类型共享,则无法从结果文件名中确定文件类型,这将非常有用。为了符合标准的 Windows 做法,此索引从 1 开始。
需要注意的是筛选器字符串的格式。此字符串必须采用“Word 文件 (*.doc)|文本文件 (*.txt)”的形式。即每个格式一个扩展名,格式之间用竖线分隔。每个扩展名必须放在括号内,并且采用 *.ext 的形式。
初始文件类型由默认文件名确定(如果提供了默认文件名)。此文件名也可以是“*.ext”。如果未提供默认文件名,则使用筛选器字符串中的第一个文件类型。
通常这样使用 CFileExportDialog
类
CFileExportDialog dialog("Save As Type", // title "Windows Bitmap (*.bmp)|JPEG Compressed Image (*.jpg)|"\ // filter string.. "Windows Meta File (*.wmf)|Windows Enhanced Meta File (*.emf)", // with file types "visualization.jpg"); // default filename (may be omitted) if (dialog.DoModal() == IDOK) { CString filename = dialog.GetPathName(); int filetype = dialog.GetFilterIndex(); SaveFile(filename, filetype); // defined somewhere in the application }