使用SHBrowseForFolder 函数 函数作用:使用对话框来进行文件路径选择。 函数声明 PIDLIST_ABSOLUTE SHBrowseForFolder(LPBROWSEINFO lpbi); 参数 lpbi lpbi [in] A pointer to a BROWSEINFO structure. [在]一个指针为BROWSEINFO 结构。 Conveys information used to display the dialog box.传达信息,用来显示该对话框。 返回值 Returns a pointer to an item identifier list (PIDL) that specifies the location of the selected folder relative to the root of the namespace. 返回的是一个指针,一个项目标识符列表( PIDL ),指定的位置选定的文件夹相对的根命名空间。 If the user chooses the Cancel button in the dialog box, the return value is NULL. 如果用户选择取消按钮的对话框中,返回值为 NULL 。 It is possible that the PIDL returned is that of a folder shortcut rather than a folder. 可能是 PIDL 话,返回是一个文件夹的快捷方式,而不是一个文件夹。 BROWSEINFO 的结构如下: typedef struct _browseinfo { HWND hwndOwner; // 父窗口句柄 LPCITEMIDLIST pidlRoot; // 要显示的文件夾的根(Root) LPTSTR pszDisplayName; // 保存被选取的文件夾路径的缓冲区 LPCTSTR lpszTitle; // 显示位于对话框左上部的标题 UINT ulFlags; // 指定对话框的外观和功能的標志 BFFCALLBACK lpfn; // 处理事件的回调函数 LPARAM lParam; // 应用程序传给回调函数的参数 int iImage; // 保存被选取的文件夾的图片索引 } BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO pszDisplayName -- -- 這個参数指向一個缓冲区,SHBrowseForFolder 默认这个缓冲区的大小为MAX_PATH (系统定义的宏,表示一个路径名的最大长度),并用它来保存被选取的文件夹的路径。 ulFlags -- SHBrowseForFolder 允许我们指定对话框的功能和外观,这个参数正是起这样的用途。 它的值可以由十几个宏组合而成。比如 BIF_RETURNNONLYFSDIRS是返回文件系统的目录, BIF_BROWSEFORCOMPUTER 是返回网络上的计算机名,BIF_EDITBOX 是显示一个编辑框, 允许用户输入文件夾名。一般来说,如果是简单的用于选择一个文件夹,设置 u lFlags = BIF_RETURNONLYLYFSDIRS 即可。 pidRoot -- 它指向一个 ITEMIDLIS...