void CSaveFileDlg::OnButtonOpendir()
{
// TODO: Add your control notification handler code here
HWND hwnd=GetSafeHwnd(); //得到窗口对象的指针句柄
CString filePath="";
LPMALLOC pMalloc; //像弹出系统打开和保存对话框一样,还有一个浏览文件夹对话框,右下角是新建文件夹,
if(::SHGetMalloc(&pMalloc)==NOERROR)
{
BROWSEINFO bi;
TCHAR pszBuffer[MAX_PATH];
LPITEMIDLIST pidl;
bi.hwndOwner =hwnd;
bi.pidlRoot =NULL;
bi.pszDisplayName =pszBuffer;
bi.lpszTitle =_T("选择文件夹");//选择目录对话框的上部分的标题
//添加新文件夹按钮 BIF_NEWDIALOGSTYLE
bi.ulFlags=BIF_NEWDIALOGSTYLE|
BIF_RETURNONLYFSDIRS|
BIF_RETURNFSANCESTORS; //Only return file system ancestors
bi.lpfn =NULL;
bi.lParam=0;
bi.iImage=0;
if((pidl=::SHBrowseForFolder(&bi))!=NULL)
{
if(::SHGetPathFromIDList(pidl,pszBuffer)) //获得一个文件系统路径
{
filePath=pszBuffer;
}
pMalloc->Free(pidl); //释放内存
MessageBox(filePath);
}
pMalloc->Release(); //释放接口
}
}
其中BROWSEINFO是什么类?实现什么功能?LPITEMIDLIST呢?请大虾详细解释一下啊