我给用户一个CFileDialog
来保存他们的工作。支持的文件类型之一是 CSV,但在 CSV 中有几个变体(例如,行优先、列优先等)。我知道我可以在对话框中添加控件以允许这样的选择,但鉴于已经有一个输出文件类型选择器,如果可能的话我想使用它。
1 回答
我将假设您知道如何将多种文件类型添加到CFileDialog
列表中,因为有很多关于此的文章。
关闭窗口后,您可以考虑使用GetOFN方法。这将返回一个OPENFILENAME结构。
如果您仔细查看此结构的信息,您将看到:
nFilterIndex
类型:双字
文件类型控件中当前选定过滤器的索引。指向的缓冲区
lpstrFilter
包含定义过滤器的字符串对。第一对字符串的索引值为 1,第二对字符串的索引值为 2,依此类推。索引为零表示由 指定的自定义过滤器lpstrCustomFilter
。您可以在输入上指定一个索引,以指示对话框的初始过滤器描述和过滤器模式。当用户选择一个文件时,nFilterIndex
返回当前显示的过滤器的索引。如果nFilterIndex
是 0 并且lpstrCustomFilter
是NULL
,系统使用lpstrFilter
缓冲区中的第一个过滤器。如果所有三个成员都为零或NULL
,则系统不使用任何过滤器,并且不会在对话框的文件列表控件中显示任何文件。
因此,一旦关闭窗口,您就可以获得选定的过滤器索引值。由于您知道与每个索引关联的 CSV 文件类型,因此您知道该怎么做。
更新
您还可以CFileDialog
通过修改相同的结构在显示之前对其进行初始化。例如:
dlgFiles.m_ofn.nFilterIndex=2;
您可以使用此方法直接设置过滤器等,然后显示窗口。然后,访问结构以在窗口被关闭时获取选定的索引。