如何在选择文件夹并将文件保存在文件夹中

yuwei2589 2009-08-20 04:02:53
小弟我最近在研究这块东西,遇见了一个问题。希望大家能够帮忙解决一下!

我想用一个文件guest.txt保存着客人的信息,需要指定其保存的位置。
我想把其效果做到就如使用迅雷下载电影时,另存为的时候只需要指定电影下载时,存放的目录即可。

因为我的guest.txt文件名称是固定的,所以我想达到只需要指定文件夹即可。
不知道该如何实现,请大家帮忙!
...全文
187 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuwei2589 2009-08-20
  • 打赏
  • 举报
回复
多谢了!我结贴了,对各位帮助小弟的人表示感谢~
快乐鹦鹉 2009-08-20
  • 打赏
  • 举报
回复
已经发送了。都是以前从网上下的。我是不会专门去做这些东西的。都是借用。其实就是对各位写的代码进行了一些封装罢了。
MoXiaoRab 2009-08-20
  • 打赏
  • 举报
回复
接分。
yuwei2589 2009-08-20
  • 打赏
  • 举报
回复
我需要的是一个目录选择对话框,CFileDialog提供的是文件选择(打开/保存)对话框~

多谢~

shakeyou123 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 happyparrot 的回复:]
CFileDialog是不行的。我有个封装类,叫做CDirDialog,需要的话留个信。当然,用各位贴出的代码也行。
[/Quote]

问一下为什么不行,需要注意什么问题
yuwei2589 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 happyparrot 的回复:]
CFileDialog是不行的。我有个封装类,叫做CDirDialog,需要的话留个信。当然,用各位贴出的代码也行。
[/Quote]

好,可以给我看看,学习前辈的技巧!
邮箱:yuwei2589@sina.com.cn

再次感谢大家!
yuwei2589 2009-08-20
  • 打赏
  • 举报
回复
多谢大家了!我对vc属于业务爱好者~以后有问题会继续请教大家的!
I_NBFA 2009-08-20
  • 打赏
  • 举报
回复
用SHBrowseForFolder吧
fengrx 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zyq5945 的回复:]
C/C++ codevoid CTest::SelectDirDlg(char Dir[])
{
BROWSEINFO bi;
ITEMIDLIST*pidl;

bi.hwndOwner= NULL;
bi.pidlRoot= NULL;
bi.pszDisplayName= Dir;
bi.lpszTitle="选择一个目录";
bi.ulFlags= BIF_RETURNONLYFSDIRS;
bi.lpfn= NULL;
bi.lParam=0;
bi.iImage=0;

pidl= SHBrowseForFolder(&bi );/* Display "Select Folder" dialog box, Get the folder name and convert it into a ITEMLIST data structure.*/if ( pidl== NULL )
Dir[0]=0;if (!SHGetPathFromIDList( pidl, Dir ))/* Retrieve folder name from ITEMLIST structure.*/
Dir[0]=0;
}
[/Quote]
.
快乐鹦鹉 2009-08-20
  • 打赏
  • 举报
回复
CFileDialog是不行的。我有个封装类,叫做CDirDialog,需要的话留个信。当然,用各位贴出的代码也行。
shakeyou123 2009-08-20
  • 打赏
  • 举报
回复
CFileDialog这个类看看就会了啊
fishion 2009-08-20
  • 打赏
  • 举报
回复
        BROWSEINFO  bi;
bi.hwndOwner=m_hWnd;
bi.pidlRoot=NULL;
bi.pszDisplayName=NULL;
bi.lpszTitle=NULL;
bi.ulFlags=BIF_STATUSTEXT|BIF_USENEWUI|BIF_RETURNONLYFSDIRS;;
bi.lpfn =NULL;
bi.iImage =0;
LPCITEMIDLIST pidl=SHBrowseForFolder(&bi);
if(!pidl)
return;
TCHAR szDisplayName[255];
SHGetPathFromIDList(pidl,szDisplayName);
CString str(szDisplayName);


保存时要根据szDisplayName来保存路径
yuwei2589 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 happyparrot 的回复:]
无非就是需要一个目录选择对话框吧。有现成的类。
[/Quote]
就是一个目录对话框~
zyq5945 2009-08-20
  • 打赏
  • 举报
回复

void CTest::SelectDirDlg(char Dir[])
{
BROWSEINFO bi;
ITEMIDLIST *pidl;

bi.hwndOwner = NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = Dir;
bi.lpszTitle = "选择一个目录";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;

pidl = SHBrowseForFolder( &bi ); /* Display "Select Folder" dialog box, Get the folder name and convert it into a ITEMLIST data structure. */


if ( pidl == NULL )
Dir[0] = 0;

if (!SHGetPathFromIDList( pidl, Dir )) /* Retrieve folder name from ITEMLIST structure. */
Dir[0] = 0;
}
见习学术士 2009-08-20
  • 打赏
  • 举报
回复
直接贴代码:


void CDlgBackSet::OnButtonFolder()
{//选择路径
// TODO: Add your control notification handler code here
m_sFolder=BrowseForFolder(this->m_hWnd);
SetDlgItemText(IDC_EDIT_FOLDER,m_sFolder);
}
CString CDlgBackSet::BrowseForFolder(HWND hWnd)
{//选择保存备份路径函数
TCHAR szTitle[] = _T("选择备份路径");
TCHAR szDisplayName[MAX_PATH] = _T("");
TCHAR szPath[MAX_PATH] = _T("");
BROWSEINFO bi;

bi.hwndOwner = hWnd;
bi.pidlRoot = NULL;
bi.lpszTitle = szTitle;
bi.pszDisplayName = szDisplayName;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;

LPITEMIDLIST pItemIDList = SHBrowseForFolder( &bi );
if( pItemIDList )
{
SHGetPathFromIDList(pItemIDList,szPath) ;

IMalloc *pMalloc;
if( SHGetMalloc( &pMalloc ) != NOERROR )
{
TRACE( "Failed to get pointer to shells task allocator" ) ;
return szPath;
}
pMalloc->Free( pItemIDList );
if( pMalloc )
pMalloc->Release();
}
return szPath;
}
快乐鹦鹉 2009-08-20
  • 打赏
  • 举报
回复
无非就是需要一个目录选择对话框吧。有现成的类。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧