Mfc CFileDialog多个CSV文件类型
我给用户一个Mfc CFileDialog多个CSV文件类型,mfc,cfiledialog,Mfc,Cfiledialog,我给用户一个CFileDialog来保存他们的工作。支持的文件类型之一是CSV,但在CSV中有两种变体(例如,行主、列主等)。我知道我可以在对话框中添加控件来允许这样的选择,但是如果可能的话,我想使用一个输出文件类型选择器。我假设您知道如何将多个文件类型添加到CFileDialog列表中,因为有很多关于这方面的文章 一旦窗户被开除,你可以考虑使用这个方法。这将返回一个结构 如果仔细查看此结构的信息,您将看到: 过滤指数 类型:德沃德 “文件类型”控件中当前选定筛选器的索引。lpstrFilter
CFileDialog
来保存他们的工作。支持的文件类型之一是CSV,但在CSV中有两种变体(例如,行主、列主等)。我知道我可以在对话框中添加控件来允许这样的选择,但是如果可能的话,我想使用一个输出文件类型选择器。我假设您知道如何将多个文件类型添加到CFileDialog
列表中,因为有很多关于这方面的文章
一旦窗户被开除,你可以考虑使用这个方法。这将返回一个结构
如果仔细查看此结构的信息,您将看到:
过滤指数
类型:德沃德
“文件类型”控件中当前选定筛选器的索引。lpstrFilter
指向的缓冲区包含定义筛选器的字符串对。第一对字符串的索引值为1,第二对字符串的索引值为2,依此类推。索引为零表示由lpstrCustomFilter
指定的自定义筛选器。可以在输入时指定索引,以指示对话框的初始过滤器描述和过滤器模式。当用户选择文件时,nFilterIndex
返回当前显示的过滤器的索引。如果nFilterIndex
为零且lpstrfstomfilter
为NULL
,系统将使用lpstrFilter
缓冲区中的第一个过滤器。如果所有三个成员均为零或NULL
,则系统不使用任何筛选器,也不在对话框的文件列表控件中显示任何文件
因此,一旦窗口关闭,您就可以获得所选的过滤器索引值。因为您知道与每个索引关联的CSV文件的类型,所以您知道该做什么
更新
您还可以通过修改相同的结构在显示之前初始化CFileDialog
。例如:
dlgFiles.m_ofn.nFilterIndex=2;
您可以使用此方法直接设置过滤器等,然后显示窗口。然后,访问结构,在窗口被关闭时获取所选索引。我不确定OP到底有什么问题,但我认为值得注意的是,一个过滤器模式(
“*.CSV”
)可以在多个过滤器字符串中显示。它不作为密钥使用,也不必是唯一的。@i完全可检测。在我看来,他至少会有两个密钥,都是CSV文件类型。但是一个写的像这样,另一个写的像那样。这就是索引可以用来微调要写入的CSV格式的地方。我还没有尝试过,但这看起来是一个很好的解决方案,可以确定用户选择的CSV格式。不过还有一个角度:我需要将该菜单设置为正确的菜单——也就是说,如果它加载了CSV格式2,那么写入格式2将是最好的默认值……它应该是nFilterIndex
,而不是nFileExtension
。在显示窗口之前,可以初始化OFN
结构。例如:dlgExport.m_of n.nFilterIndex=2