vb6通用对话框另存为,选择了哪个文件扩展名

vb6通用对话框另存为,选择了哪个文件扩展名,vb6,Vb6,使用公共对话框控件,假设我设置 .Filter = "Text (.txt)|*.txt|Comma Separated (.csv)|*.csv|Excel (.xls)|*.xls" 如果用户没有显式键入.txt或.csv或.xls,而只是输入了一个文件名,那么人们如何知道希望保存为哪个扩展名?正如您所注意到的,过滤器索引只能用于指定默认过滤器,公共对话框控件实际上不会提供用户选择的过滤器 我也不得不做同样的事情,切换到Win32 API版本。下面是一个编写良好的示例,详细介绍了GetSa

使用公共对话框控件,假设我设置

.Filter = "Text (.txt)|*.txt|Comma Separated (.csv)|*.csv|Excel (.xls)|*.xls"

如果用户没有显式键入
.txt
.csv
.xls
,而只是输入了一个文件名,那么人们如何知道希望保存为哪个扩展名?

正如您所注意到的,
过滤器索引
只能用于指定默认过滤器,公共对话框控件实际上不会提供用户选择的过滤器

我也不得不做同样的事情,切换到Win32 API版本。下面是一个编写良好的示例,详细介绍了
GetSaveFileName()
API和
OPENFILENAME
结构的使用:


此时,您可以在调用
GetSaveFileName()
后使用
filebox.nFilterIndex
参数查看用户实际选择的内容。

.Filter
在返回时包含它。nFilterIndex指定文件类型控件中当前选定过滤器的索引。lpstrFilter指向的缓冲区包含定义筛选器的字符串对。第一对字符串的索引值为1,第二对字符串的索引值为2,依此类推。索引为零表示lpstrCustomFilter指定的自定义筛选器。可以在输入时指定索引,以指示对话框的初始过滤器描述和过滤器模式。当用户选择一个文件时,nFilterIndex返回当前显示的过滤器的索引。@ACatInLove-这应该是一个答案,而不是注释。没错,它解决了OP的问题。nFilterIndex不指定当前选定filterFilterIndex属性的索引为打开或另存为对话框返回或设置默认筛选器。犯错误回答错误Bahman DEFAULT not selected DEFAULTReading MSDN(和))不完全清楚它应该做什么。听起来它可能只用于设置默认值(而不是读取用户的选择)。但是,尽管如此,从中读取选择项确实有效,我们有依赖于此的代码。