MFC选择目录SHBrowseForFolder选择文件CFileDialog对话框设置默认路径
来源:互联网 发布:淘宝买家地域分布图 编辑:程序博客网 时间:2024/05/17 08:10
大气象学习园地
MFC选择目录SHBrowseForFolder选择文件CFileDialog对话框设置默认路径
using namespace std;
namespace BaseFunc
{
// 选择文件,可设置定位到默认目录
unsigned selFile(string &strFile,const string &strExt,bool bOpen);
// 选择目录,可设置定位初始目录
unsigned selDir(string &strDir,void *hwnd = NULL);
}
#include <Windows.h>
#include "BaseFunc.h"
using namespace std;
using namespace BaseFunc;
unsigned BaseFunc::selFile( string &strFile,const string &strExt,bool bOpen )
{
string strDir = "D:\\Downloads";//这里通过strFile解析目录,CFileDialog会自动记住
string filename = "hi.txt"; //通过strFile解析文件名
string filter = strExt + "文件 (*." + strExt + ")|*." + strExt + "||";
string ext = "." + strExt;
CFileDialog dlg(bOpen,ext.c_str(),filename.c_str(),OFN_READONLY|OFN_OVERWRITEPROMPT,filter.c_str(),NULL);
dlg.GetOFN().lpstrInitialDir = strFile.c_str();// 默认目录
if (dlg.DoModal())
{
strFile = dlg.GetPathName();
return IDOK;
}
return IDCANCEL;
}
int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData)
{
switch(uMsg)
{
case BFFM_INITIALIZED:
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,lpData);
break;
}
return 0;
}
unsigned BaseFunc::selDir( string &strDir,void *hwnd/* = NULL*/ )
{
char szDir[MAX_PATH];
BROWSEINFO bi;
bi.hwndOwner = (HWND)hwnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szDir;
bi.lpszTitle = "选择位置:";
bi.iImage = 0;
bi.ulFlags = BIF_USENEWUI | BIF_RETURNONLYFSDIRS;
bi.lpfn = BrowseCallbackProc;
bi.lParam = (LPARAM)(LPCTSTR)strDir.c_str();
LPITEMIDLIST lp = SHBrowseForFolder(&bi);
if (lp && SHGetPathFromIDList(lp,szDir))
{
strDir = szDir;
return IDOK;
}
return IDCANCEL;
}
{
CString sFile;
GetDlgItemText(IDC_EDIT_FILE,sFile);
std::string strFile = sFile;
if (IDOK == BaseFunc::selFile(strFile,"mp3",true))
{
SetDlgItemText(IDC_EDIT_FILE,strFile.c_str());
}
}
void CselDirDlg::OnBnClickedButtonDir()
{
CString sDir;
GetDlgItemText(IDC_EDIT_DIR,sDir);//可扩展个返回string
std::string strDir = sDir;
if (IDOK == BaseFunc::selDir(strDir,GetSafeHwnd()))
{
SetDlgItemText(IDC_EDIT_DIR,strDir.c_str());
}
}
url:http://greatverve.cnblogs.com/archive/2012/12/16/SHBrowseForFolder-CFileDialog.html
注意:目录浏览函数不仅可以选择目录,也可以用来选择一个文件。
下例是一个既可以选择目录也可以选择文件的代码范例。该范例中详细说明了相关消息的含义及使用方法。
//目录浏览对话框可能会像回调函数发送3种消息:
//BFFM_INITIALIZED --
//
//BFFM_SELCHANGED -- 目录浏览对话框当前选择项发生变化时调用此消息。
//
//BFFM_VALIDATEFAILED -- 表示用户按确认按钮时却发现浏览对话框的编辑框内输入了一个非法名称
//
//回调函数可以发送如下几个消息给目录浏览对话框,从而改变目录浏览对话框的面目
//BFFM_SETSELECTION
//BFFM_ENABLEOK
//BFFM_SETSTATUSTEXT-- 改变目录浏览对话框中状态行消息,当然前提是目录浏览对话框中有状态行
int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData)
{
}
void CModifyFileAttributeDlg::OnSelectpath()
{
- MFC选择目录SHBrowseForFolder选择文件CFileDialog对话框设置默认路径
- MFC选择目录SHBrowseForFolder选择文件CFileDialog对话框设置默认路径
- MFC选择目录SHBrowseForFolder选择文件CFileDialog对话框设置默认路径
- SHBrowseForFolder目录选择对话框
- MFC选择目录SHBrowseForFolder
- MFC选择目录SHBrowseForFolder
- MFC选择目录SHBrowseForFolder
- 利用SHBrowseForFolder 产生路径选择对话框 同时指向默认路径文件
- MFC文件选择对话框CFileDialog的使用
- 选择目录对话框和选择文件对话框——CFileDialog
- MFC CFolderPickerDialog 和CFileDialog选择文件路径
- CFileDialog文件选择对话框
- CFileDialog文件选择对话框
- MFC文件对话框目录选择
- VC选择文件夹路径对话框 - SHBrowseForFolder 函数
- MFC选择文件夹对话框,选择文件路径
- zz:利用SHBrowseForFolder 产生路径选择对话框 同时指向默认路径文件夹
- MFC 选择文件对话框/打开目录对话框
- vc创建可移动控件
- Spring Bean引用例子
- 一条命令搞定PHP安装
- 矩阵求导公式
- for in 快速枚举
- MFC选择目录SHBrowseForFolder选择文件CFileDialog对话框设置默认路径
- 对页面静态化的概念和实现过程的理解
- 推荐!手把手教你使用Git
- 禁止eclipse对压缩过的JS提示报错
- centos 启动tomcat 报错40001
- 浅谈多系统配置信息的放置
- First-编译原理课程简介
- unbuntu图形界面设置root密码
- mysql 保存到csv