MFC选择文件和文件夹对话框
vs2013环境要求比vc6.0严格些。以前的代码不能直接拿来用,做了些修改。有效果图。
打开文件:
- CString gReadFilePathName;
- CFileDialog fileDlg(true, _T("mp3"), _T("*.mp3"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("mp3 Files (*.mp3)|*.mp3|wav File(*.wav)|*.wav|All File (*.*)|*.*||"), NULL);
- if (fileDlg.DoModal() == IDOK) //弹出对话框
- {
- gReadFilePathName = fileDlg.GetPathName();//得到完整的文件名和目录名拓展名
- GetDlgItem(IDC_EDIT1)->SetWindowText(gReadFilePathName);//将路径显示
- CString filename = fileDlg.GetFileName();
- }
打开文件夹:
- CFileFind finder;
- CString path;
- BOOL fileExist;
- // 获取特定文件夹的LPITEMIDLIST,可以将之理解为HANDLE
- // 所谓的特定文件夹,你可以用CSIDL_XXX来检索之。
- LPITEMIDLIST rootLoation;
- SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &rootLoation);
- if (rootLoation == NULL) {
- // unkown error
- return;
- }
- // 配置对话框
- BROWSEINFO bi;
- ZeroMemory(&bi, sizeof(bi));
- bi.pidlRoot = rootLoation; // 文件夹对话框之根目录,不指定的话则为我的电脑
- bi.lpszTitle = _T("对话框抬头"); // 可以不指定
- // bi.ulFlags = BIF_EDITBOX | BIF_RETURNONLYFSDIRS;
- // 打开对话框, 有点像DoModal
- LPITEMIDLIST targetLocation = SHBrowseForFolder(&bi);
- if (targetLocation != NULL) {
- TCHAR targetPath[MAX_PATH];
- SHGetPathFromIDList(targetLocation, targetPath);
- //MessageBox( targetPath );
- GetDlgItem(IDC_EDIT1)->SetWindowText(targetPath);//将路径显示
- }
出处:http://blog.csdn.net/scu_zhongxq/article/details/5354003
在MFC编程中经常会需要用到选择目录和选择文件的界面,以下总结一下本人常用的这两种对话框的生成方法:
选择目录对话框
void CDcPackerDlg::OnBnClickedDecgen()
{
char szPath[MAX_PATH]; //存放选择的目录路径
CString str;
ZeroMemory(szPath, sizeof(szPath));
BROWSEINFO bi;
bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szPath;
bi.lpszTitle = "请选择需要打包的目录:";
bi.ulFlags = 0;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
//弹出选择目录对话框
LPITEMIDLIST lp = SHBrowseForFolder(&bi);
if(lp && SHGetPathFromIDList(lp, szPath))
{
str.Format("选择的目录为 %s", szPath);
AfxMessageBox(str);
}
else
AfxMessageBox("无效的目录,请重新选择");
}
选择文件对话框
{
CString strFile = _T("");
CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.cfg)|*.cfg|All Files (*.*)|*.*||"), NULL);
if (dlgFile.DoModal())
{
strFile = dlgFile.GetPathName();
}
return strFile;
}
//加载文件按钮
void CDcPackerDlg::OnBnClickedSelectdec()
{
// TODO: Add your control notification handler code here
m_strDescPath = ""; //类的成员变量
//"打开文件"对话框,选择文件,返回其路径
m_strDescPath = BootOpenDialog();
}
Windows--MFC选择文件对话框和选择文件夹对话框
选择单个文件对话框:
1 CString strFile = _T(""); 2 3 CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.jpg)|*.jpg|All Files (*.*)|*.*||"), NULL); 4 5 if (dlgFile.DoModal()) 6 { 7 strFile = dlgFile.GetPathName(); 8 }
选择多个文件对话框
1 void CBugReportDlg::SelectFiles( vector<CString>& all_sel_files ) 2 { 3 CFileDialog dlg(TRUE, _T("*.jpg"), NULL, OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, _T("Image Files(*.jpg)|*.jpg|"), NULL); 4 dlg.m_ofn.lpstrTitle = _T("选择图片"); 5 CString filename; 6 if(dlg.DoModal() == IDOK) 7 { 8 POSITION fileNamesPosition = dlg.GetStartPosition(); 9 while(fileNamesPosition != NULL) 10 { 11 filename = dlg.GetNextPathName(fileNamesPosition); 12 all_sel_files.push_back(filename); 13 } 14 } 15 16 }
选择文件夹
1 CString CBugReportDlg::SelFilePath() 2 { 3 TCHAR szFolderPath[MAX_PATH] = {0}; 4 CString strFolderPath = TEXT(""); 5 6 BROWSEINFO sInfo; 7 ::ZeroMemory(&sInfo, sizeof(BROWSEINFO)); 8 sInfo.pidlRoot = 0; 9 sInfo.lpszTitle = _T("请选择处理结果存储路径"); 10 sInfo.ulFlags = BIF_RETURNONLYFSDIRS|BIF_EDITBOX|BIF_DONTGOBELOWDOMAIN; 11 sInfo.lpfn = NULL; 12 13 // 显示文件夹选择对话框 14 LPITEMIDLIST lpidlBrowse = ::SHBrowseForFolder(&sInfo); 15 if (lpidlBrowse != NULL) 16 { 17 // 取得文件夹名 18 if (::SHGetPathFromIDList(lpidlBrowse,szFolderPath)) 19 { 20 strFolderPath = szFolderPath; 21 } 22 } 23 if(lpidlBrowse != NULL) 24 { 25 ::CoTaskMemFree(lpidlBrowse); 26 } 27 28 return strFolderPath; 29 }
MFC选择文件和文件夹对话框相关推荐
- MFC选择文件对话框和选择文件夹对话框
转::https://www.cnblogs.com/zhqshome/p/7063730.html 选择单个文件对话框: CString strFile = _T("");CFi ...
- MFC实现打开、保存文件对话框和浏览文件夹对话框,把代码直接拷贝到要响应的按钮函数下面就行了
MFC实现打开.保存文件对话框和浏览文件夹对话框,把代码直接拷贝到要响应的按钮函数下面就行了 一.打开.保存对话框 文件对话框属于通用对话框范畴(另外还有颜色,查找,查找替换,字体,打印等对话框). ...
- 弹出打开/保存文件对话框 选择文件夹对话框
打开/保存文件对话框: CFileDialog::CFileDialog(BOOL bOpenFileDialog, //为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框LPCTSTR ...
- MFC初探 —— 文件与文件夹的选择与拷贝
一.选择文件 其中CFileDialog类中的参数OFN_ALLOWMULTISELECT表示多个文件的选择,若只需要选择一个文件,删除该参数即可. /// <summary> /// 选 ...
- 选择文件对话框、保存文件对话框、选择文件夹对话框
选择文件对话框 // 设置图像文件过滤格式CString lv_strFilterAll = _T("所有文件(*.*)|*.*||");CString lv_strFilterJ ...
- NX二次开发-UFUN打开选择文件夹对话框UF_UI_create_filebox
NX二次开发-UFUN打开选择文件夹对话框UF_UI_create_filebox #include <uf.h> #include <uf_ui.h> #include &l ...
- QML 打开文件夹对话框选择文件保存路径
import QtQuick 2.14 import QtQuick.Controls 2.14 import Qt.labs.platform 1.0ApplicationWindow {visib ...
- MFC获取文件及文件夹
前言: 转载请附上连接,本帖原创请勿照抄. 主界面: .h文件 // Test_FileDlg.h: 头文件 //#pragma once// CTestFileDlg 对话框 class CTest ...
- VS2010/MFC编程入门之十七(对话框:文件对话框)
上一讲鸡啄米介绍的是消息对话框,本节讲解文件对话框.文件对话框也是很常用的一类对话框. 文件对话框的分类 文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见 ...
- VC++打开、保存文件对话框和浏览文件夹对话框
一.打开文件夹: 1.CFileDialog实现 CFileDialog hFileDlg(true,NULL , NULL, OFN_FILEMUSTEXIST | OFN_READON ...
最新文章
- 维护窗口和停机时间 可用率99.99%
- go get 获取被墙依赖包解决方法
- 医学影像设备学_【技士/师证考试宝典】第四篇 医学影像设备学2
- MySQL - 并发事务问题及解决方案
- 用户登录成功后才进入主窗口进行其他操作
- php strstr 从尾部,PHP strstr() 和 strrchr() 详解
- ubuntu开机时网络图标不见了且不能上网
- jquery的ajax用法
- Linux安装SQLite轻量级数据库
- “SCSA-S学习导图+”系列:Windows下的WEB系统环境搭建
- python贝叶斯网络预测模型_高效灵活的概率建模方法基于Python
- A40i使用笔记:使用QT调用aplay播放wav音频/混音
- js实现canvas在线画板
- 如何提高思考能力,(一个绝对能帮到你的科普)取自《思维混乱:是因为大脑没有结构》谢春霖
- Android 11.0 12.0默认开启开发者模式和开启usb调试模式
- MySQL表空间碎片
- 融创孙喆一:父辈的光环与阴影下,我反对扮演所谓的二代
- 2022-11 | Redis命令SET SETEX SETNX语法及描述
- YUV 420 444 421 422 的正解(转载)
- 《针灸》笔记(倪海厦先生人纪系列针灸篇——综合)