当前位置:首页 » 文件管理 » mfc文件夹选择对话框

mfc文件夹选择对话框

发布时间: 2022-07-27 18:53:20

① MFC中如何实现点击一个按钮,弹出个选择文件夹的对话框,选择文件夹后,自动把文件夹内的文件都读出来

CFile file("路径名",CFile::modeRead);
char *buf;
DWORD len;
len=file.GetLength();
buf=new char[len+1];
buf[len]=0;
file.Read(buf,len);
file.Close();
MessageBox(buf); //输出文档内的字符串

② MFC如何实现文件夹选择对话框

今天写一个程序,其中一个功能是用对话框来选择一个文件夹的路径。可是以前常用的CFileDialog必须指定到文件,选择一个文件夹只能继续打开而不能返回这个路径,CFileDialog貌视也没有参数可以弄成选择文件夹的式样。上网找了找,CSDN里有人提供下面这个函数的用法:
CString
ShowSelectDirectoryDlg(const
CString
&
strDlgTitle)
{
char
szDir[MAX_PATH];
BROWSEINFO
bi;
ITEMIDLIST
*pidl;
bi.hwndOwner
=
this->m_hWnd;
bi.pidlRoot
=
NULL;
bi.pszDisplayName
=
szDir;
bi.lpszTitle
=
strDlgTitle;
bi.ulFlags
=
BIF_RETURNONLYFSDIRS;
bi.lpfn
=
NULL;
bi.lParam
=
0;
bi.iImage
=
0;
pidl
=
SHBrowseForFolder(&bi);
if(pidl
==
NULL)
return
_T();
if(!SHGetPathFromIDList(pidl,
szDir))
return
_T();
这个函数的传入参数strDlgTitle,就是选择文件夹对话框的标题栏名称。只需要模拟这个函数的写法,添加代码到特定的消息响应函数里去就可以了。

③ MFC 弹出支持文件和文件夹混选的对话框

没有现成可以用的,只能自己实现;

假设存在,如果你双击某个文件夹,那么是应该选择还是打开;
所以是没有直接可以实现这个功能的对话框的,通过自绘等方式肯定可以实现,不过很麻烦;
当你出现这样的需求的时候应该考虑下你的设计是不是存在问题了。

④ MFC如何实现文件夹选择对话框

今天写一个程序,其中一个功能是用对话框来选择一个文件夹的路径。可是以前常用的CFileDialog必须指定到文件,选择一个文件夹只能继续打开而不能返回这个路径,CFileDialog貌视也没有参数可以弄成选择文件夹的式样。上网找了找,CSDN里有人提供下面这个函数的用法: CString ShowSelectDirectoryDlg(const CString & strDlgTitle) { char szDir[MAX_PATH]; BROWSEINFO bi; ITEMIDLIST *pidl; bi.hwndOwner = this->m_hWnd; bi.pidlRoot = NULL; bi.pszDisplayName = szDir; bi.lpszTitle = strDlgTitle; bi.ulFlags = BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; bi.lParam = 0; bi.iImage = 0; pidl = SHBrowseForFolder(&bi); if(pidl == NULL) return _T(); if(!SHGetPathFromIDList(pidl, szDir)) return _T(); 这个函数的传入参数strDlgTitle,就是选择文件夹对话框的标题栏名称。只需要模拟这个函数的写法,添加代码到特定的消息响应函数里去就可以了。

⑤ MFC点击按钮打开对话框选择文件夹(不是文件)

选择所选择的文件夹,获取文件夹的路径:
CString
m_FileDir;
BROWSEINFO
bi;
ZeroMemory(&bi,
sizeof(BROWSEINFO));
bi.hwndOwner
=
m_hWnd;
bi.ulFlags
=
BIF_RETURNONLYFSDIRS;
LPITEMIDLIST
pidl
=
SHBrowseForFolder(&bi);
BOOL
bRet
=
FALSE;
TCHAR
szFolder[MAX_PATH*2];
szFolder[0]
=
_T('');
if
(pidl)
{
if
(SHGetPathFromIDList(pidl,
szFolder))
bRet
=
TRUE;
IMalloc
*pMalloc
=
NULL;
if
(SUCCEEDED(SHGetMalloc(&pMalloc))
&&
pMalloc)
{
pMalloc->Free(pidl);
pMalloc->Release();
}
}
m_FileDir
=
szFolder;//选择的文件夹路径
查找所有MDB文件(记录数组自己写吧)
CFileFind
ff;
BOOL
res
=
ff.FindFile(m_FileDir+"*.mdb");
while(res)
{
res
=
ff.FindNextFile();
//不遍历子目录
if(!ff.IsDirectory()
&&
!ff.IsDots())
{
CString
strFile
=
ff.GetFileName();
…//
在这里写需要的代码
}
}
ff.Close();
//
不要忘记关闭

⑥ MFC怎么创建浏览文件夹和文件的对话框

{
CString FilePathName;
CFileDialog dlg(TRUE);///TRUE为OPEN对话框,FALSE为SAVE AS对话框
if(dlg.DoModal()==IDOK)
FilePathName=dlg.GetPathName();
}

文件名保存在了FilePathName里,然后处理吧

⑦ MFC怎样创建能同时浏览文件夹和文件的对话框

BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO)); //指定存放文件的默认文件夹路径
bi.lpszTitle="请选择文件夹"; //添加提示语句
bi.ulFlags=0x0040 | BIF_EDITBOX; //添加“新建文件夹项”
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);//以默认路径打开浏览文件夹对话框
TCHAR * savepath = new TCHAR[MAX_PATH];
CString savepath2="";
if(pidl != NULL)
{
SHGetPathFromIDList(pidl,savepath);//把文件夹路径存放在savepath中
savepath2.Format(_T("%s"),savepath);
savepath2=savepath2+"\\";//在路径后增加斜杠
if(SUCCEEDED(SHGetMalloc(&pMalloc)))//网上说pidl指向的对象用完应该释放
{
pMalloc->Free(pidl);
pMalloc->Release();
}
} MessageBox(savepath2);//显示所选文件夹路径

这是修改后的代码,添加了第三四行,亲测可用

⑧ MFC弹出文件夹选择对话框问题

这个BROWSERINFO就是选择对话框的信息(比如要选择文件的类型,起始目录,还有就是存储路径的字符串等等)LPITEMIDLIST这个暂时没看出有什么用。

⑨ MFC 路径选择对话框

如果是选择文件的话那么正如wwwgmc所写的那样。
但是如果提问者说的是路径选择对话框则应是如下代码(代码中采用控制台的形式给出SHBrowseForFolder()的用法):

#include <stdio.h>
#include <Windows.h>
#include <shlobj.h>

int main()
{
BROWSEINFO stInfo = {NULL};
LPCITEMIDLIST pIdlst;
TCHAR szPath[MAX_PATH];
stInfo.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_USENEWUI;
stInfo.lpszTitle= "请选择路径:";
pIdlst = SHBrowseForFolder(&stInfo);
if(!pIdlst) return 1;
if(!SHGetPathFromIDList(pIdlst, szPath)) return 1;
printf(szPath);
return 0;
}

热点内容
建造师加密狗 发布:2025-04-09 10:24:07 浏览:260
java爬虫源码 发布:2025-04-09 10:23:53 浏览:414
速迅安卓哪里下载 发布:2025-04-09 10:23:14 浏览:521
c语言公式计算 发布:2025-04-09 10:09:07 浏览:558
php数组下标排序 发布:2025-04-09 09:57:19 浏览:853
服务器python 发布:2025-04-09 09:48:09 浏览:561
压缩袋抽多久 发布:2025-04-09 09:45:53 浏览:163
phpqq分享 发布:2025-04-09 09:02:45 浏览:354
sql虚拟列 发布:2025-04-09 08:59:36 浏览:85
ps入门笔记本电脑需要什么配置 发布:2025-04-09 08:56:34 浏览:278