我们在用“browseinfo”产生的浏览文件夹的对话框中发现没有“新建文件夹”这一个项目。而我的程序中需要在这个时候先创建新的文件夹在选择保存到刚刚创建的文件夹下。当然,你也可以先到指定目录下创建完,在从这里浏览选定。可是毕竟你还得退回到盘符,进去你想创建文件夹的地方,是比较麻烦了。如果有像保存文件夹那样里面可以随时创建多方便啊。于是为了个人需求还算是研究了一下,以下代码就可以派上用场了:
#define BIF_NEWDIALOGSTYLE 0x0040
#define BIF_USENEWUI (BIF_NEWDIALOGSTYLE | BIF_EDITBOX)
void SelectFolder(HWND hWnd,CString& strSelectPath)
{
BROWSEINFO bi;
char FileName[MAX_PATH];
ZeroMemory(&bi,sizeof(BROWSEINFO));
bi.hwndOwner = hWnd;
bi.pszDisplayName = FileName;
bi.lpszTitle="Select Folder";
bi.ulFlags= BIF_USENEWUI;
LPITEMIDLIST idl=SHBrowseForFolder(&bi);
if(idl==NULL)
return;
SHGetPathFromIDList(idl,FileName);
}
其中这个就是那句可以添加新件文件夹选项的:
#define BIF_USENEWUI (BIF_NEWDIALOGSTYLE | BIF_EDITBOX)
原先只有BIF_NEWDIALOGSTYLE,自己定义一个宏,把BIFEDITBOX 与上就ok。不妨自己试一试。