过滤条件

【勇芳软件工作室】汉化HomePreviousNext

本节中的信息适用于资源管理器风格和旧样式打开和另存为对话框。

您可以提供文件名过滤器来帮助用户限制对话框显示的文件名。文件名过滤器由一对空值终止的字符串,描述和模式组成,一个连接到另一个。对话框显示说明,让用户选择要使用的过滤器;并使用该模式来选择要显示的文件。

要指定过滤器,请将OPENFILENAME结构的lpstrFilter成员设置为指向包含过滤器字符串对数组的缓冲区。数组中的最后一个字符串必须后跟一个额外的空字符。

模式字符串可以是有效的文件名字符和星号(*)的组合。星号是表示任何有效文件名字符组合的通配符。对话框仅显示与模式匹配的文件。要为相同的描述指定多个模式,必须使用分号(;)分隔模式。请注意,图案字符串中的空格字符可能会产生意想不到的结果。

以下代码片段指定了两个过滤器。具有“源”描述的过滤器有两种模式。如果用户选择此过滤器,则对话框仅显示具有.C和.CXX扩展名的文件。

的OPENFILENAME; //常见的对话框结构

ofn.lpstrFilter =“Source \\ 0 * .C; *。CXX \\ 0All \\ 0 *。* \\ 0”

ofn.nFilterIndex = 1;cy

nFilterIndex结构的nFilterIndex成员指定了一个索引,指示对话框最初使用哪个过滤器。缓冲区中的第一个过滤器的索引为1,第二个为2,等等。如果用户在使用对话框时更改过滤器,则nFilterIndex成员将在返回时设置为所选过滤器的索引。

您可以通过将lpstrCustomFilter成员设置为包含单个过滤器的缓冲区的地址,并将nMaxCustFilter成员设置为缓冲区的大小(以字符或字节为单位)来创建自定义过滤器。对话框始终将自定义过滤器放置在过滤器列表的开头,返回时始终使用用户选择的过滤器中的模式更新过滤器的模式部分。

对于资源管理器样式的对话框,如果用户选择不同的过滤器,默认扩展名可能会更改。如果用户选择第一个模式为*。XXX(即扩展名不包含通配符)的过滤器,则对话框将使用XXX作为默认扩展名。仅当您在OPENFILENAME结构的lpstrDefExt成员中指定了默认扩展名时,才会发生此情况。例如,如果用户选择“Source \\ 0 * .C; *。CXX \\ 0”过滤器,则默认扩展名将更改为“C”。但是,如果您将过滤器定义为“Source \\ 0 * .C * \\ 0”,则默认扩展名不会更改,因为扩展名包含通配符。