用mfc已经打开好一群图像,和已得到这群图像的个个路径,如何将他们保存到另外一个文件里。就是在增加一个按钮给他添加程序,是这个文件夹里的图像都存到另一个文件夹里。下面是打开文件夹和获取路径的代码void CHelloDlg::OnButton1()
{
BROWSEINFO bi;
char pszBuffer[MAX_PATH];
LPITEMIDLIST pidl;
bi.hwndOwner=GetSafeHwnd();
bi.pidlRoot=NULL;
bi.pszDisplayName=pszBuffer;
bi.lpszTitle=_T("Help");
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
bi.lpfn=NULL;
bi.lParam=0;
if((pidl=::SHBrowseForFolder(&bi))!=NULL)
{
if(::SHGetPathFromIDList(pidl,pszBuffer)) //此即为文件的路径
{
CFileDialog* filedialog;
filedialog=new CFileDialog(true);
CFileFind finder; //声明一个CFileFind变量
CString strWildcard(pszBuffer); //将传入的参数赋于变量 strWildcard
strWildcard += "\\*.jpg"; //构造成一个合格的查询字符串,类似于 c:\\aa\\*.*
BOOL bWorking;
bWorking = finder.FindFile(strWildcard); //开始查找
while (bWorking)
{
bWorking = finder.FindNextFile(); //如果文件存在,继续查找下一个符合条件的文件
//跳过"."和".."
if (finder.IsDots())
continue;
//输出文件名
CString strName = finder.GetFilePath();
MessageBox(strName);//strname就是每个文件的路径,只要将他作为参数传给图像处理函数就行了
}
}
}
}
{
BROWSEINFO bi;
char pszBuffer[MAX_PATH];
LPITEMIDLIST pidl;
bi.hwndOwner=GetSafeHwnd();
bi.pidlRoot=NULL;
bi.pszDisplayName=pszBuffer;
bi.lpszTitle=_T("Help");
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
bi.lpfn=NULL;
bi.lParam=0;
if((pidl=::SHBrowseForFolder(&bi))!=NULL)
{
if(::SHGetPathFromIDList(pidl,pszBuffer)) //此即为文件的路径
{
CFileDialog* filedialog;
filedialog=new CFileDialog(true);
CFileFind finder; //声明一个CFileFind变量
CString strWildcard(pszBuffer); //将传入的参数赋于变量 strWildcard
strWildcard += "\\*.jpg"; //构造成一个合格的查询字符串,类似于 c:\\aa\\*.*
BOOL bWorking;
bWorking = finder.FindFile(strWildcard); //开始查找
while (bWorking)
{
bWorking = finder.FindNextFile(); //如果文件存在,继续查找下一个符合条件的文件
//跳过"."和".."
if (finder.IsDots())
continue;
//输出文件名
CString strName = finder.GetFilePath();
MessageBox(strName);//strname就是每个文件的路径,只要将他作为参数传给图像处理函数就行了
}
}
}
}
解决方案 »
- vc mfc list 不同对话框 传值
- 右键菜单响应函数的问题???
- 如何改变属性页中按钮的位置和隐藏一些按钮?
- 一个从网上下载的dll控件,怎样才能知道它是由ATL写的还是MFC写的呢?
- ^-^ 用vc++进行摄像头的图像采集
- 如何知道ip包是那个进程发出的,高分必给!
- 编译好的工程突然出现莫名其妙的错误
- 各位大侠谁能系统的贴一下VC里ADO数据库编程 _variant_t ,_bstr_t 与VC中数据类型的转换方法??
- 关于使用OLE DB 连接Access 2000
- ListCtrl中的函数InsertItem(nItem, LPSTR_TEXTCALLBACK);第二个参数如何解释。
- socket select高手来
- 关于CEdit输入数字问题
厄......
你是想说你不会用CopyFile
{
bWorking = finder.FindNextFile(); //如果文件存在,继续查找下一个符合条件的文件
//跳过"."和".."
if (finder.IsDots())
continue;
//输出文件名
CString strName = finder.GetFilePath();
CString strNewPath; //定义你的新路径。
CopyFile(strName,strNewPath,FALSE);
}
int i = 0;
while (bWorking)
{
bWorking = finder.FindNextFile(); //如果文件存在,继续查找下一个符合条件的文件
//跳过"."和".."
if (finder.IsDots())
continue;
//输出文件名
CString strNameShuzu[i] = finder.GetFilePath();
i++;
}
N = i;
然后是写void CHelloDlg::OnButton2()
{
CString newpath = "新的路径字符串";
CString newpicpath;
for(int i = 0;i < N;++i)
{
stringstream s; //这个是个字符串流,有可能拼写有点错误,可以msdn下
s<<i;
newpicpath = newpath + s;
CopyFile(strName,newpicpath,FALSE);//这个函数借用楼上的了哈。
}
}
ok ,it's done
要给我分咯^_^