关于VC弹出选择文件夹对话框
来源:互联网 发布:如何下载英语翻译软件 编辑:程序博客网 时间:2024/06/06 10:43
VC编程中经常需要弹出选择文件夹对话框供用户选择目标文件夹
基本实现的源码如下
void CTestDlg::OnBtnTest() {// TODO: Add your control notification handler code hereTCHAR pszPath[MAX_PATH];BROWSEINFO bi; bi.hwndOwner = this->GetSafeHwnd();bi.pidlRoot = NULL;bi.pszDisplayName = NULL; bi.lpszTitle = TEXT("请选择文件夹"); bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;bi.lpfn = NULL; bi.lParam = 0;bi.iImage = 0; LPITEMIDLIST pidl = SHBrowseForFolder(&bi);if (pidl == NULL){return;}if (SHGetPathFromIDList(pidl, pszPath)){AfxMessageBox(pszPath);}}
这一般均能够满足要求,但有时还是需要在此基础上增强一些功能。
比如在弹出选择文件夹对话框时选中默认的文件夹,或在STATUSTEXT区域显示一些信息等等。这需要在BrowseCallbackProc回调函数中实现。具体实现的源码如下:
(具体BrowseCallBackFun回调函数的用法请参照MSDN)
//选择文件夹对话框回调函数int CALLBACK BrowseCallBackFun(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData){switch(uMsg){case BFFM_INITIALIZED: //选择文件夹对话框初始化//设置默认路径为lpData即'D:\'::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);//在STATUSTEXT区域显示当前路径::SendMessage(hwnd, BFFM_SETSTATUSTEXT, 0, lpData);//设置选择文件夹对话框的标题::SetWindowText(hwnd, TEXT("请先设置个工作目录")); break;case BFFM_SELCHANGED: //选择文件夹变更时{TCHAR pszPath[MAX_PATH];//获取当前选择路径SHGetPathFromIDList((LPCITEMIDLIST)lParam, pszPath);//在STATUSTEXT区域显示当前路径::SendMessage(hwnd, BFFM_SETSTATUSTEXT, TRUE, (LPARAM)pszPath);}break;}return 0;}void CTestDlg::OnBtnTest() {// TODO: Add your control notification handler code hereTCHAR pszPath[MAX_PATH];BROWSEINFO bi; bi.hwndOwner = this->GetSafeHwnd();bi.pidlRoot = NULL;bi.pszDisplayName = NULL; bi.lpszTitle = TEXT("请选择文件夹"); bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;bi.lpfn = BrowseCallBackFun; //回调函数bi.lParam = (LPARAM)TEXT("D:\\"); //传给回调函数的参数,设置默认路径bi.iImage = 0; LPITEMIDLIST pidl = SHBrowseForFolder(&bi);if (pidl == NULL){return;}if (SHGetPathFromIDList(pidl, pszPath)){AfxMessageBox(pszPath);}}
附图片:
当然也可以设置选择文件对话框的其他样式,比如使其具有新增文件夹的功能,可如下实现
bi.ulFlags = BIF_USENEWUI
附图:(改图来源于www.VCKBASE.com,本人电脑上安装的是VC6,不支持BIF_USENEWUI,请在VC2003+上尝试)
具体请参照MSDN
- 关于VC弹出选择文件夹对话框
- 关于VC弹出选择文件夹对话框
- 【转】关于VC弹出选择文件夹对话框
- 关于VC弹出选择文件夹对话框
- VC 弹出选择文件夹对话框
- VC弹出"选择文件"和"选择文件夹"对话框(转)
- VC弹出"选择文件"和"选择文件夹"对话框(转)
- VC弹出"选择文件"和"选择文件夹"对话框
- VC弹出"选择文件"和"选择文件夹"对话框
- VC弹出选择“文件路径”和选择“文件夹路径”对话框
- 弹出"选择文件夹"对话框
- 弹出文件夹选择对话框
- VC弹出“选择文件夹”对话框的程序的编写
- VC弹出“选择文件夹”对话框的程序的编写
- vc文件夹选择对话框
- VC++_选择文件夹对话框
- VC弹出“选择文件夹”对话框的程序的编写(ZZ)
- VC弹出“选择文件夹”对话框的程序的编写(ZZ)
- Interlocked系列互锁函数
- googlemaps API V3 之(四)marker局部加载优化处理
- iptables限制连接数量三种限制方式
- mysql 的root密码忘了的重置方法
- 【VC++】在对话框中使用ON_UPDATE_COMMAND_UI更新菜单
- 关于VC弹出选择文件夹对话框
- C语言宏定义技巧(常用宏定义)
- 将一个JQGrid的数据通过拖曳的方式将数据复制到JQGrid
- 结构体内存对齐
- linux条件变量用法
- Delphi编译常见错误中文手册 Delphi 2010
- android的email时间为1970年1月1日
- Kindle 3 连接TP-LINK WR340G 的方法
- NOI 2010