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