BROWSEINFO结构体,主要是对目录对话框的设计,包括以下几个成员:
typedef struct _browseinfo {
HWND hwndOwner; //设定对话框的父窗口
LPCITEMIDLIST pidlRoot; //指定对话框中要显示的root目录,如果为空则显示桌面上的root目录
LPSTR pszDisplayName; //存储用户选择路径的buffer,大小可以设置为MAX_PATH
LPCSTR lpszTitle; //对话框中的标题(提示信息)
UINT ulFlags; //选择目录的模式,比如可以只能选择计算机,只能选择目录或能选择具体的文件等
BFFCALLBACK lpfn; //当被创建时调用的函数指针,经常设置为null
LPARAM lParam; //函数的参数
int iImage; //存储与被选择的文件夹相关的image的变量
} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;
LPITEMIDLIST SHBrowseForFolder(LPBROWSEINFO lpbi)显示选择目录对话框并返回用户选择的路径,该路径被放在结构体
ITEMIDLIST中
BOOL SHGetPathFromIDList( LPCITEMIDLIST pidl, LPSTR pszPath )将pidl中存储的路径信息存储到pszPath中,这样就得到了用户选择的路径
//得到目录中的文件(遍历文件夹,如果里面还含有文件夹,这种方法还要添加其他判断语句)
CFileFind finder;
BOOL bWorking = finder.FindFile("*.*");
while (bWorking) {
bWorking = finder.FindNextFile();
cout << (LPCTSTR) finder.GetFileName() << endl; }