在VC ++中使用GetOpenFileName()API打开文件夹&不是文件

时间:2013-01-30 04:03:48

标签: c++ winapi visual-c++ dialog menuitem

BOOL WINAPI GetOpenFileName(        Inout LPOPENFILENAME lpofn     );

用于在VC ++程序中打开文件,比如说

  

C:\你好\世界\的abc.txt

。 但我想使用此功能选择文件夹

  

C:\你好\世界   在其中安装了一个文件。

我想我需要对结构“OPENFILENAME”的成员进行一些更改。任何人都可以知道如何在VC ++程序中实现这一目标。提前谢谢。

2 个答案:

答案 0 :(得分:4)

GetOpenFileName根本不支持文件夹选择。

您的选择是:

  • SHBrowseForFolder在Windows 2000及更高版本中可用,但看起来有点难看。
  • IFileDialog这是平台本机文件夹选择器,但仅在Vista或更高版本上可用。要使对话框作为文件夹选择器,请将FOS_PICKFOLDERS传递给SetOptions

在我看来,用户的最佳结果是在可用的情况下使用IFileDialog,但对于较旧的操作系统,可以使用SHBrowseForFolder

答案 1 :(得分:1)

ShBrowseForFolder。如果你搜索,有很多C ++例子。