如何实现带有新建文件夹功能的文件夹选择对话框?

BlackSnail 2005-06-01 09:57:01
FlashGet中选择下载保存目录的对话框就有新建文件夹的功能,请问是怎么实现的?

谢谢
...全文
210 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlackSnail 2005-06-06
  • 打赏
  • 举报
回复
可以了,谢谢。

#define BIF_NEWDIALOGSTYLE 0x0040
#define BIF_RETURNONLYFSDIRS 0x0001

BROWSEINFO bi;
char buffer[MAX_PATH];
ZeroMemory(buffer, MAX_PATH);
bi.hwndOwner = GetSafeHwnd();
bi.pidlRoot = NULL;
bi.pszDisplayName = buffer;

bi.lpszTitle = "Ñ¡ÔñÒ»¸öÎļþ¼Ð";
bi.ulFlags = BIF_NEWDIALOGSTYLE | BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;

LPITEMIDLIST pList = NULL;
if ((pList = SHBrowseForFolder(&bi)) != NULL)
{
char path[MAX_PATH];
ZeroMemory(path, MAX_PATH);
SHGetPathFromIDList(pList, path);//pathÊÇÑ¡ÖеÄĿ¼
m_certdir=path;
UpdateData(FALSE);
}
bohut 2005-06-01
  • 打赏
  • 举报
回复
BROWSEINFO bi;
char buffer[MAX_PATH];
ZeroMemory(buffer, MAX_PATH);
bi.hwndOwner = GetSafeHwnd();
bi.pidlRoot = NULL;
bi.pszDisplayName = buffer;

bi.lpszTitle = "选择一个文件夹";
bi.ulFlags = BIF_NEWDIALOGSTYLE;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;

LPITEMIDLIST pList = NULL;
if ((pList = SHBrowseForFolder(&bi)) != NULL)
{
char path[MAX_PATH];
ZeroMemory(path, MAX_PATH);
SHGetPathFromIDList(pList, path);//path是选中的目录
}
junhuang09 2005-06-01
  • 打赏
  • 举报
回复
char SelectedDir[MAX_PATH]; // 最终结果
BROWSEINFO bi; // 入参
char FolderName[MAX_PATH]; // 所选目录名称,例如选择C:\Windows\Font,则为Font
LPITEMIDLIST ItemID; // 所选目录的系统标志指针

memset(SelectedDir, 0, MAX_PATH); // 初始化最终结果
memset(&bi, 0, sizeof(BROWSEINFO)); // 初始化入参所有数据
bi.hwndOwner = this->GetSafeHwnd();
bi.pszDisplayName = FolderName;
bi.lpszTitle = "请选择目录"; // 改成自己希望的
bi.ulFlags=BIF_RETURNONLYFSDIRS;
ItemID = SHBrowseForFolder(&bi); // 调用函数,打开目录选择对话框
if(ItemID)
{
SHGetPathFromIDList(ItemID, SelectedDir); // 获取所选目录的全名
GlobalFree(ItemID); // 返回的ItemID占用了系统资源,不要忘了释放
}
BlackSnail 2005-06-01
  • 打赏
  • 举报
回复
谢谢二位的回复。

我的环境是Win2K+VC6.0,提示“找不到BIF_NEWDIALOGSTYLE”。需要什么额外的头文件吗?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧