问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

C++中用MFC创建的列表控件如何实现双击打开文件列表框中的文件夹

发布网友 发布时间:2022-07-19 13:22

我来回答

1个回答

热心网友 时间:2023-10-16 04:41

MFC 打开保存文件对话框 .
分类: VS学习 2011-11-14 17:19 331人阅读 评论(0) 收藏 举报
一、打开文件夹:

1、CFileDialog实现

CFileDialog hFileDlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_READONLY,
TEXT("支持的图像文件 (*.jpg;*.gif;*.bmp;...)|*.jpg;*.gif;*.bmp|专用Tiff图像文件(*.tiff;*.tif)|*.tiff;*.tif|所有文件(*.*)|*.*||"),NULL);
hFileDlg.m_ofn.nFilterIndex=1;
hFileDlg.m_ofn.hwndOwner=m_hWnd;
hFileDlg.m_ofn.lStructSize=sizeof(OPENFILENAME);
hFileDlg.m_ofn.lpstrTitle=TEXT("打开图像文件...\0");
hFileDlg.m_ofn.nMaxFile=MAX_PATH;
if(hFileDlg.DoModal() == IDOK)
{
m_path = hFileDlg.GetPathName();
UpdateData(FALSE);
}

2、API实现

OPENFILENAMEA ofn;
char szFile[260];
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "音频文件\0*.wma\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = 0;

if (GetOpenFileNameA(&ofn)==FALSE)
{
return S_FALSE;
}
CString c_save_path=ofn.lpstrFile;

二、保存文件

同上,只不过将
CFileDialog hFileDlg(true,NULL 改为 CFileDialog hFileDlg(false,NULL,
或者将GetOpenFileNameA改为GetSaveFileNameA,即可。

三、浏览文件夹对话框

//回调函数
int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
if(uMsg==BFFM_SELCHANGED||uMsg==BFFM_INITIALIZED)
{
if(uMsg==BFFM_INITIALIZED)
{
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,LPARAM(lpData));
}
}
return 0;
}

TCHAR chPath[255]; //用来存储路径的字符串
CString strPath = "";
BROWSEINFO bInfo;
GetMoleFileName(NULL,chPath,MAX_PATH);
strPath =chPath;
ZeroMemory(&bInfo, sizeof(bInfo));
bInfo.hwndOwner = m_hWnd;
bInfo.lpszTitle = _T("请选择路径: ");
bInfo.ulFlags = BIF_RETURNONLYFSDIRS|BIF_EDITBOX;
bInfo.lpfn = BrowseCallbackProc;
bInfo.lParam = (LPARAM)strPath.GetBuffer(strPath.GetLength());

LPITEMIDLIST lpDlist; //用来保存返回信息的IDList
lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框
if(lpDlist != NULL) //用户按了确定按钮
{
SHGetPathFromIDList(lpDlist, chPath);//把项目标识列表转化成字符串
strPath = chPath; //将TCHAR类型的字符串转换为CString类型的字符串
m_save_path=strPath;
UpdateData(FALSE);
}

设置对话框的标题:
dlg.m_ofn.lpstrTitle = _T("Open Image");追问我是想打开文件列表框中的文件夹。有什么办法实现呢

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
dnf属性强化增加多少攻击力 上海青种多久能吃 上海青栽种多久可以吃 上海青种植几个月才能收获 1月播种上海青多久发芽 1月播种上海青发芽所需时间 上海青种植多久可以吃 上海青 多久 上海青种多久成熟 用可丽蓝十字验孕棒测了两次结果不同,这是怀孕了吗? PHP实现简单的发送HTML邮件 尖锐湿疣为什么会很容易复发 MFC中mfceditbrowse这个文件浏览控件什么用 德克士卡友日买一送一最多买几个? 德克士卡友日的问题。 每个月几号是德克士卡友日,买一送一? 卡友日是买一送一吗? 卡友日的由来卡友日的由来 《武林外传》主演的军衔各是什么? 哪有2009年儿科病房院内感染工作总结及计划 孔子提出君子和而不同 小人同而不和你是怎么理解的 ‘君子和而不同,小人同而不和’谁来翻译下。 君子和而不同,道不同不相为谋都是孔子说的吗?不是矛盾吗 君子和而不同,小人同而不和。——孔子这句话的意思是什么? 君子和而不同,道不同不相为谋都是孔子说的吗?不是矛盾吗? 君子和而不同,小人同而不和。君子泰而不骄,小人马乔而不泰。君子谋 世博会场馆 上海世博会的各国展馆都建在什么地方啊 首届老舍散文奖获奖作品——鼓神 别把子持白莲当粉蔓 粉蔓的养殖方法和注意事项 长时间喝蒲公英水,对身体有影响吗? VS2008 MFC中List Control控件,我要建立一个文件浏览对话框,然后多选把打开的文件显示在List Control控 MFC程序问题——如何通过点击按钮弹出文件目录浏览,选择目录 怎么用mfc建立一个文件浏览器 MFC中如何实现通过浏览按钮将文件路径写到Edit框中,有没有现成的控件?还是需要自己弄一个对话框实现? 买了凤梨花了三斤28并且不甜怎么办,很后悔,怕爸妈知道被骂,但一个... 白蛇传说的幕后制作 固态硬盘装系统,什么也没有安装,可用空间自动越来越小。 南红玛瑙可以和绿幽灵戴在一起吗? 游泳馆吊顶一般用什么材料 恒温游泳馆顶面吊顶用什么材料好。 标准的游泳馆配置尺寸,水面距离顶棚高度是多少? 游泳馆吊顶材料什么样的比较好 游泳馆吊顶用铝扣板好不好? 郑州一游泳馆房顶坍塌,有三人遇难,相关负责人需要承担哪些法律责任? 梦见红棺材是什么意思 梦见红棺材好不好 奥林匹斯山的月光可以买吗 消费者购买行为的误区有哪些 离职证明丢了,上一家公司不给补开 如何删除电脑上一个分区 Professional Degree Supplemental Tuition是什么
  • 焦点

最新推荐

猜你喜欢

热门推荐