项目中需要在在指定路径下导入一个目录,通过查找MSDN找到可以使用BROWSEINFO结构体来控制打开操作,该结构体解析如下:
typedef struct _browseinfo {
HWND hwndOwner; // 父窗口句柄
LPCITEMIDLIST pidlRoot; // 要显示的文件目录对话框的根(Root)
LPTSTR pszDisplayName; // 保存被选取的文件夹路径的缓冲区
LPCTSTR lpszTitle; // 显示位于对话框左上部的标题
UINT ulFlags; // 指定对话框的外观和功能的标志
BFFCALLBACK lpfn; // 处理事件的回调函数
LPARAM lParam; // 应用程序传给回调函数的参数
int iImage; // 文件夹对话框的图片索引
} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO
从中我们看到需要配置第2个参数pidlRoot来实现指定路径,因此需要得到当前目录下的LPCITEMIDLIST的一个指针,所以我们先编写一个子函数来获得该指针。
LPITEMIDLIST CFileView::GetIDListFromPath(CString strPathName)
{
if(TRUE == strPathName.IsEmpty())
return NULL;
LPSHELLFOLD