void CMy123View::OnFolderOpen()
{
BROWSEINFO bInfo;//定义一个BROWSEINFO结构体对象,BROWSEINFO结构中包含有用户选中目录的重要信息。
ZeroMemory(&bInfo, sizeof(bInfo));//The ZeroMemory function fills a block of memory with zeros
bInfo.hwndOwner = m_hWnd;//Handle to the owner window for the dialog box;
//bInfo.lpszTitle = _T("请选择路径: ");//_T("")是一个宏,定义于tchar.h下,他的作用是让你的程序支持Unicode编码
bInfo.ulFlags = BIF_RETURNONLYFSDIRS; //BIF_RETURNONLYFSDIRS:Only return file system directories
LPITEMIDLIST lpDlist; //用来保存返回信息的IDList
lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框,将文件夹信息传递给lpDlist
SHGetPathFromIDList(lpDlist, chPath);//把项目标识列表转化成char型字符串
strPath = chPath; //将TCHAR类型的字符串转换为CString类型的字符串
。。。
}
BROWSEINFO结构体:
Contains parameters for the SHBrowseForFolder function and receives information about the folder selected by the user. 包含了SHBrowseForFolder函数的参数,接收用户所选文件夹的信息。
LPITEMIDLIST:
指向ITEMIDLIST结构体的指针;
typedef struct _ITEMIDLIST {
SHITEMID mkid;
} ITEMIDLIST, * LPITEMIDLIST;
typedef const ITEMIDLIST * LPCITEMIDLIST;