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

mfc选择文件夹对话框

发布时间: 2023-01-23 03:05:27

‘壹’ 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;
}

‘贰’ MFC弹出文件夹选择对话框问题

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

‘叁’ 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如何实现文件夹选择对话框

今天写一个程序,其中一个功能是用对话框来选择一个文件夹的路径。可是以前常用的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中如何实现点击一个按钮,弹出个选择文件夹的对话框,选择文件夹后,自动把文件夹内的文件都读出来

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中打开一个文件,如单击一个按钮,然后弹出选择文件的框框,我需要打开这个文件!

//文件属性定义
CString filename;
CString fileext;//文件扩展名
CString filepathname;
//选择文件
CFileDialog fpdlg(TRUE, NULL, NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"(文件类型)(*.dat)|*.dat|(文件类型)(*.sth)|*.sth|所有文件(*.*)|*.*||",NULL);
if(fpdlg.DoModal() == IDOK)
{
filename = fpdlg.GetFileName();
fileext = fpdlg.GetFileExt();//文件扩展名
filepathname = fpdlg.GetPathName();
//UpdateData(FALSE);
}
//打开文件
CFile fp;
if(filepathname ==_T(""))
{
//AfxMessageBox("请选择文件!");
return ;
}
if(!(fp.Open((LPCTSTR)filepathname,CFile::modeRead)))
{
AfxMessageBox("文件打开失败!");
return ;
}
//读取文件
fp.SeekToEnd();
unsigned long len = fp.GetLength();
char* buff;
buff=new char[len+1];
fp.SeekToBegin();
if(fp.Read(buff,len)<1)
{
fp.Close();
}
fp.Close();

热点内容
如何制作带密码的pe 发布:2024-05-09 18:47:04 浏览:21
qq怎么设置空间访问密码 发布:2024-05-09 18:08:13 浏览:640
微信公众号的缓存 发布:2024-05-09 18:08:12 浏览:566
计算机的存储单元中存储的内容 发布:2024-05-09 17:57:24 浏览:626
大众速腾和哪个车配置一样 发布:2024-05-09 17:50:15 浏览:296
数据库未来 发布:2024-05-09 17:44:48 浏览:756
编程考试C 发布:2024-05-09 17:28:58 浏览:573
如何说明电脑配置要求 发布:2024-05-09 17:24:44 浏览:988
sql半角全角 发布:2024-05-09 17:09:57 浏览:846
存储空间软盘排名 发布:2024-05-09 16:56:42 浏览:511