DlgDirListComboBoxA 函数 (winuser.h)

将组合框的内容替换为指定目录中的子目录和文件的名称。 可以通过指定一组文件属性来筛选名称列表。 名称列表可以包含映射的驱动器号。

语法

int DlgDirListComboBoxA(
  [in]      HWND  hDlg,
  [in, out] LPSTR lpPathSpec,
  [in]      int   nIDComboBox,
  [in]      int   nIDStaticPath,
  [in]      UINT  uFiletype
);

参数

[in] hDlg

类型: HWND

包含组合框的对话框的句柄。

[in, out] lpPathSpec

类型: LPTSTR

指向缓冲区的指针,该缓冲区包含以 null 结尾的字符串,该字符串指定绝对路径、相对路径或文件名。 绝对路径可以以驱动器号开头, (例如 d:) 或 UNC 名称 (例如\\machinename\sharename) 。

函数将字符串拆分为目录和文件名。 函数在目录中搜索与文件名匹配的名称。 如果字符串未指定目录,该函数将搜索当前目录。

如果字符串包含文件名,则文件名必须至少包含一个通配符 (?或 ) 。如果字符串不包含文件名,则函数的行为就像指定星号通配符 () 作为文件名一样。 指定目录中与文件名匹配且具有 uFiletype 参数指定属性的所有名称都会添加到组合框中显示的列表中。

[in] nIDComboBox

类型: int

hDlg 对话框中组合框的标识符。 如果此参数为零, 则 DlgDirListComboBox 不会尝试填充组合框。

[in] nIDStaticPath

类型: int

hDlg 对话框中静态控件的标识符。 DlgDirListComboBox 设置此控件的文本以显示当前驱动器和目录。 如果不想显示当前驱动器和目录,此参数可以为零。

[in] uFiletype

类型: UINT

一组位标志,指定要添加到组合框的文件或目录的属性。 此参数可以是以下值的组合。

含义
DDL_ARCHIVE
包括存档的文件。
DDL_DIRECTORY
包括子目录,这些子目录括在方括号 ([ ]) 中。
DDL_DRIVES
所有映射的驱动器都会添加到列表中。 驱动器以 [-x-] 格式列出,其中 x 是驱动器号。
DDL_EXCLUSIVE
仅包含具有指定属性的文件。 默认情况下,即使未指定DDL_READWRITE,也会列出读/写文件。
DDL_HIDDEN
包括隐藏的文件。
DDL_READONLY
包括只读文件。
DDL_READWRITE
包括没有其他属性的读/写文件。 这是默认设置。
DDL_SYSTEM
包括系统文件。
DDL_POSTMSGS
如果设置了此标志, DlgDirListComboBox 将使用 PostMessage 函数将消息发送到组合框。 如果未设置此标志, DlgDirListComboBox 将使用 SendMessage 函数。

返回值

类型: int

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 例如,如果 lpPathSpec 指定的字符串不是有效路径,则函数将失败。 要获得更多的错误信息,请调用 GetLastError。

注解

如果 lpPathSpec 指定目录, DlgDirListComboBox 在填充组合框之前将当前目录更改为指定的目录。 由 nIDStaticPath 参数标识的静态控件的文本设置为新的当前目录的名称。

DlgDirListComboBoxCB_RESETCONTENTCB_DIR 消息发送到组合框。

Microsoft Windows NT 4.0 及更高版本:如果 uFiletype 包含 DDL_DIRECTORY 标志,并且 lpPathSpec 指定了一级目录(如 C:\TEMP),则组合框将始终包含根目录的“..”条目。 即使根目录具有隐藏或系统属性,并且未指定DDL_HIDDEN和DDL_SYSTEM标志,也是如此。 NTFS 卷的根目录具有隐藏属性和系统属性。

安全警告: 错误使用此函数可能会损害程序的安全性。 此函数的不正确使用包括使 lpPathSpec 指示不可写缓冲区或没有 null 终止的缓冲区。 在继续之前,应查看 安全注意事项:Microsoft Windows 控件

Microsoft Windows NT 4.0 及更高版本:列表显示长文件名(如果有)。

Windows 95 或更高版本:列表 (8.3 窗体) 显示短文件名。 可以使用 SHGetFileInfoGetFullPathName 函数获取相应的长文件名。

Windows 95 或更高版本:适用于 Unicode 的 Microsoft Layer 支持 DlgDirListComboBoxW 。 若要使用此功能,必须将某些文件添加到应用程序,如 Windows Me/98/95 Systems 上的 Microsoft Layer for Unicode 中所述。

注意

winuser.h 标头将 DlgDirListComboBox 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll

另请参阅

DlgDirList

DlgDirSelectComboBoxEx

引用