怎么显示一个可以选择目录的打开对话框
2010-07-16 18:03
573 查看
怎么显示一个可以选择目录的打开对话框
CFileDialog只可以让用户选中某个文件,并不能让用户选择某个文件夹。所以需要自己来做这个打开对话框。
这是我写的一个封装的函数:输入默认路径,返回用户选中的路径。
这中间用到了一个回调函数:
CFileDialog只可以让用户选中某个文件,并不能让用户选择某个文件夹。所以需要自己来做这个打开对话框。
这是我写的一个封装的函数:输入默认路径,返回用户选中的路径。
//显示 文件夹对话框,获得用户的选择结果 tstring CSelDialog::GetUserSelDirectory(tstring & strDefaultDir) { tstring strSelectDir; //默认的root路径 TCHAR szDefaultDir[MAX_PATH]; _tcsncpy(szDefaultDir,strDefaultDir.c_str(),strDefaultDir.length()); //获得的路径缓存 TCHAR szPath[MAX_PATH]; //显示 选择文件夹对话框 BROWSEINFO bf; ZeroMemory(&bf,sizeof(BROWSEINFO)); bf.lParam=(LPARAM)szDefaultDir; bf.lpfn=CallbackProc; bf.lpszTitle=_T("请选择备份文件夹"); bf.ulFlags=BIF_STATUSTEXT|BIF_BROWSEINCLUDEFILES; //相当于DoModule,最后的选择结果保存在strSelectDir 字符串中 LPITEMIDLIST lpitem=SHBrowseForFolder(&bf); if (lpitem!=NULL) { if(SHGetPathFromIDList(lpitem,szPath) == TRUE) { strSelectDir=szPath; } } return strSelectDir; }
这中间用到了一个回调函数:
//打开文件夹对话框的回调函数 int CALLBACK CallbackProc( HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData ) { tstring strRoot; tstring strCurr; switch(uMsg) { //初始化 case BFFM_INITIALIZED: { strRoot=lpData; strRoot=_T("D://BackData"); ::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,lpData); } break; //选择发生改变 case BFFM_SELCHANGED: { TCHAR curr[MAX_PATH]; SHGetPathFromIDList((LPCITEMIDLIST)lParam,curr); //在这里可以加上判断,如果选中的不是符合要求的目录,就可以灰掉“OK”按钮 // if (不满足要求) { ::SendMessage(hwnd, BFFM_ENABLEOK , 0, 0); } else { ::SendMessage(hwnd, BFFM_ENABLEOK , 1, 1); ::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)curr); } } break; default: break; } return 0; }
相关文章推荐
- 编写一个基于对话框的应用程序可以用来打开及显示文本文件设置所显示的文本的字体颜色。
- VC打开一个目录选择对话框,并设置初始化目录
- C#窗体程序怎么点击按钮打开一个选择文件的对话框
- VC打开一个目录选择对话框,并设置初始化目录
- 一个可以记住上一次的选择的选择目录的对话框的实现代码段
- VC中选择文件目录和打开文件对话框
- :创建一个窗体;在窗体上添加一个按钮(text设置为 选择线颜色);向窗体添加一个颜色对话框(colorDialog1)单击按钮,能够打开一个颜色对话框,选择颜色,且更改画笔颜色
- 两个选择其中一个既可以在新窗口打开项目了
- 如何在VBS脚本中显示“选择文件对话框”或“选择目录对话框”
- C#之WinForm基础 打开的对话框可以选择多个文件
- 创建一个如下的窗体,并在窗体上放置colorDialog控件。实现功能:1)程序运行时,单击打开颜色对话框按钮,可选择颜色,并以所选颜色作为窗体背景色
- C#打开选择文件对话框和选择目录对话框
- (转)记录:VC++中打开保存目录选择对话框操作
- MFC中新添一个对话框后怎么在主窗口中显示
- Office 2010 excel在打开两个表格的时候,只能在一个窗口显示,怎么分开来看?
- WPF下OpenFileDialog实现同一个对话框里打开文件或文件目录
- 打开文件对话框与目录选择对话框
- 弹出一个密码对话框,可以显示和隐藏密码
- 利用Api函数ShellAboutA可以显示一个与Windows操作系统风格一致的About对话框