社区
C++ 语言
帖子详情
CFileDialog保存多个文件
liqianfu0214
2009-04-13 05:16:36
先用CFileDialog打开对话框,多选几个文件点击打开,然后怎么把这几个文件保存到我指定的文件夹里,希望哪位大侠给我个代码,谢谢!还有为什么这样运行MoveFile(E:\music.mp3,E:\home)会报错呢?
...全文
257
13
打赏
收藏
CFileDialog保存多个文件
先用CFileDialog打开对话框,多选几个文件点击打开,然后怎么把这几个文件保存到我指定的文件夹里,希望哪位大侠给我个代码,谢谢!还有为什么这样运行MoveFile(E:\music.mp3,E:\home)会报错呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fuqianli
2009-04-14
打赏
举报
回复
MoveFile(E:\music.mp3,E:\home\music.mp3)函数必须这样用,不然实现不了。
fairchild811
2009-04-13
打赏
举报
回复
movefile内e:\\m.mp3, e:\\m\n\m.mp3
jixingzhong
2009-04-13
打赏
举报
回复
POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置。
CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。
jixingzhong
2009-04-13
打赏
举报
回复
使用CFileDialog类并设置OFN_ALLOWMULTISELECT标志时,OPENFILENAME结构体的lpstrFile成员是一个指向用户申请分配的缓冲区,里面接受所选的路径和文件名列表,这个列表的每一项由一个NULL隔开,最末以两个NULL结束。nMaxFile成员指明了缓冲区的大小,如果所选择的文件名的加起来的总长度超过了此值,则DoModal函数返回IDCANCEL,如果用户试图打开超过缓冲区大小的文件集的话,CommDlgExtendedError()将返回FNERR_BUFFERTOOSMALL,这时候,lpstrFile的前两个byte将会包含实际需要的缓冲区的字节数。
如果是在Windows NT 4.0下,能被拷贝到lpstrFile缓冲区的字节数被限制在2562字节以内,如果超过将被截断。
以下是一个使用该类进行多文件名选择的例子。
#include "cderr.h" //for definition of FNERR_BUFFERTOOSMALL
CFileDialog dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, NULL, NULL);
DWORD MAXFILE = 4000
dlg.m_ofn.nMaxFile = MAXFILE;
char* pc = new char[MAXFILE];
dlg.m_ofn.lpstrFile = pc;
dlg.m_ofn.lpstrFile[0] = NULL;
int iReturn = dlg.DoModal();
if(iReturn == IDOK)
...{
int nCount = 0;
POSITION pos = dlg.GetStartPosition();
while (pos != NULL)
...{
dlg.GetNextPathName(pos);
nCount++;
}
CString str;
str.Format("Successfully opened %d files ", nCount);
AfxMessageBox(str);
}
else if(iReturn == IDCANCEL)
AfxMessageBox("Cancel");
if(CommDlgExtendedError() == FNERR_BUFFERTOOSMALL)
AfxMessageBox("BUFFERTOOSMALL");
delete []pc;
如果需要进一步的信息,可以参看:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/_mfc_cfiledialog.asp
xmrforever
2009-04-13
打赏
举报
回复
[Quote=引用 7 楼 liqianfu0214 的回复:]
各位就不能给出个像样点的答案来吗?我都说过了那种方法没有用,像这种方法我自己还不会吗?晕倒!
[/Quote]
注意态度
oyljerry
2009-04-13
打赏
举报
回复
[Quote=引用 7 楼 liqianfu0214 的回复:]
各位就不能给出个像样点的答案来吗?我都说过了那种方法没有用,像这种方法我自己还不会吗?晕倒!
[/Quote]
你说不能用,那你起码要检查首先是否正确读取出来,其次如果读出来了,那是写入文件不对?
liqianfu0214
2009-04-13
打赏
举报
回复
各位就不能给出个像样点的答案来吗?我都说过了那种方法没有用,像这种方法我自己还不会吗?晕倒!
tnswy
2009-04-13
打赏
举报
回复
_T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||"),
这个是用来设置对话框里面能看到的文件类型,这里设置的是 txt,你可以根据自己的需要设置。
tnswy
2009-04-13
打赏
举报
回复
while(mPos!=NULL)
10 {
11 pathName=mFileDlg.GetNextPathName(mPos);
12 TRACE("%s\n",pathName);
// 在这里copy文件,
CopyFile(pathName,你的目标目录,true);
//或者move文件
MoveFile(pathName,你的目录,true);
13 }
tnswy
2009-04-13
打赏
举报
回复
// 首先创建一个 CFIleDialog 类实例,并设置多选标志
1 CFileDialog mFileDlg(TRUE, NULL,NULL,
2 OFN_ALLOWMULTISELECT,
3 _T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||"),
4 AfxGetMainWnd());
5 CString pathName;
6 If(mFileDlg.DoModal ()==IDOK)
7 {
8 POSITION mPos=mFileDlg.GetStartPosition();
9 while(mPos!=NULL)
10 {
11 pathName=mFileDlg.GetNextPathName(mPos);
12 TRACE("%s\n",pathName);
13 }
14 }
15 else
16 TRACE(“IDCANCLE\n”);
liqianfu0214
2009-04-13
打赏
举报
回复
这种方法我用过了,没有用,根本就不能把它们保存到我指定的文件夹里去。
oyljerry
2009-04-13
打赏
举报
回复
CFileDialog参数加上OFN_ALLOWMULTISELECT
用GetStartPosition()取得第一个文件的位置,如果没有多的文件,其返回值0;
用GetNextPathName(POSITION &pos)取得文件名,并指向下一个文件的POSITION。
如:
POSITION pos;
CString str;
pos=dlg.GetStartPosition();
while(!pos)
{
str=dlg.GetNextPathName(pos);
//...
//...
}
liqianfu0214
2009-04-13
打赏
举报
回复
没有兄弟帮帮忙吗 我实在是没有分了哦
C
File
DIalog
保存
多个
文件
MFC中使用C
File
类和C
File
Dialog
可以很简单的载入和
保存
文件
…… C
File
Dialog
文件
选择对话框的使用: 首先构造一个对象并提供相应的参数,构造函数原型如下: C
File
Dialog
::C
File
Dialog
( BOOL bOpen
File
Dialog
, //为TRUE则显示打开对话框,为FALSE则显示
保存
对话
文件
对话框 LPCTSTR lpszDefExt =
C
File
Dialog
打开目录
文件
保存
目录
文件
格式说明: explicit C
File
Dialog
( BOOL bOpen
File
Dialog
, //TRUE 为打开, FALSE 为
保存
LPCTSTR lpszDefExt = NULL,//默认
文件
扩展名 LPCTSTR lpsz
File
C
File
Dialog
打开目录
文件
保存
目录
文件
格式说明: explicit C
File
Dialog
( BOOL bOpen
File
Dialog
, //TRUE 为打开, FALSE 为
保存
LPCTSTR lpszDefExt = NULL, // 默认
文件
扩展名 LPCTSTR lp
C
File
Dialog
打开
文件
夹
文件
保存
文件
夹
文件
格式说明: explicit C
File
Dialog
( BOOL bOpen
File
Dialog
, //TRUE 为打开, FALSE 为
保存
LPCTSTR lpszDefExt = NULL, // 默认
文件
扩展名 LPCTST...
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章