GetOpenFileNameA 函数 (commdlg.h)

[从 Windows Vista 开始, “打开 ”和“ 另存为 ”常用对话框已被 “通用项”对话框取代。 建议使用通用项对话框 API,而不是通用对话框库中的这些对话框。]

创建“ 打开 ”对话框,允许用户指定要打开的文件或文件集的驱动器、目录和名称。

语法

BOOL GetOpenFileNameA(
  [in, out] LPOPENFILENAMEA unnamedParam1
);

参数

[in, out] unnamedParam1

类型: LPOPENFILENAME

指向 OPENFILENAME 结构的指针,该结构包含用于初始化对话框的信息。 当 GetOpenFileName 返回时,此结构包含有关用户文件选择的信息。

返回值

类型: BOOL

如果用户指定文件名并单击“ 确定” 按钮,则返回值为非零值。 OPENFILENAME 结构的 lpstrFile 成员指向的缓冲区包含用户指定的完整路径和文件名。

如果用户取消或关闭“ 打开 ”对话框或发生错误,则返回值为零。 若要获取扩展的错误信息,请调用 CommDlgExtendedError 函数,该函数可返回以下值之一。

注解

“资源管理器”样式的“ 打开 ”对话框提供类似于 Windows 资源管理器的用户界面功能。 可以为资源管理器样式的“打开”对话框提供 OFNHookProc 挂钩过程。 若要启用挂钩过程,请在 OPENFILENAME 结构的 Flags 成员中设置OFN_EXPLOREROFN_ENABLEHOOK标志,并在 lpfnHook 成员中指定挂钩过程的地址。

对于希望维护与旧样式用户界面一致的用户界面的应用程序,Windows 继续支持旧样式的“ 打开 ”对话框。 若要显示旧样式的“ 打开 ”对话框,请启用 OFNHookProcOldStyle 挂钩过程并确保未设置 OFN_EXPLORER 标志。

若要显示允许用户选择目录而不是文件的对话框,请调用 SHBrowseForFolder 函数。

请注意,选择多个文件时,文件名的总字符数限制取决于函数的版本。

  • ANSI:32k 限制
  • Unicode:无限制

示例

有关示例,请参阅 打开文件

注意

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

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 commdlg.h (包括 Windows.h)
Library Comdlg32.lib
DLL Comdlg32.dll
API 集 ext-ms-win-shell-comdlg32-l1-1-1 (在 Windows 10 版本 10.0.14393 中引入)

另请参阅

CommDlgExtendedError

通用对话框库

概念性

GetSaveFileName

OFNHookProc

OFNHookProcOldStyle

OPENFILENAME

其他资源

引用

SHBrowseForFolder