//PlayBackDlg.h
CStringArray m_ArrayFiles;
HANDLEm_hThreadMoveFiles;//异步移动文件句柄
unsigned int ThreadID;
void OnRefresh();
void OnMoveTo();            //这个同步移动文件
void OnMoveToAsync();        //使用线程, 异步
//PlayBackDlg.cpp
//m_listVideo是文件列表框(CListCtrl)
unsigned int _stdcall RunMoveFilesThread( LPVOID lpParam )
{
CStringArray* pArryFiles = NULL;
pArryFiles = (CStringArray*)lpParam;
if(pArryFiles == NULL || pArryFiles->IsEmpty()) 
{
return 0;
}
CWaitCursorwait;
//
CString ItemText;
CString nFileText;
CString NewItemText;
int n = pArryFiles->GetCount();
CString strPath = pArryFiles->GetAt(n-1);
for (int i =0; i < n-1; i++)
{
ItemText  = pArryFiles->GetAt(i);    //old file full path
int pos = ItemText.ReverseFind('\\');
nFileText = ItemText.Mid(pos+1);//filename
NewItemText.Format(_T("%s%s"), strPath, nFileText); //new file full path
MoveFile(ItemText, NewItemText);
//DeleteFile(arrayFiles[i]);
}
return 0;
}

//
// 同步移动文件

void CPlayBackDlg::OnMoveTo()
{
//collect of selected video files
POSITION pos = m_listVideo.GetFirstSelectedItemPosition ();
if (!pos)
return;//所以空的视频没有让它弹出来
m_ArrayFiles.RemoveAll();
int nItem = 0;
while (pos)
{
nItem = m_listVideo.GetNextSelectedItem (pos);
m_ArrayFiles.Add (m_listVideo.GetFullPath(nItem));
}
CPathDialog  dlg( TEXT("Folder Selection"), 
TEXT("Select Image Directory to Browse"), NULL, this);
 
// show path dialog
if ( dlg.DoModal() == IDOK )
{
CString strPath = dlg.GetPathName();
if (strPath != m_DIR)
{
CString ItemText;
CString nFileText;
CString NewItemText;
AddBackSlash(strPath);
//
//start move file
m_listVideo.SetRedraw(FALSE);//avoid flash
CWaitCursorwait;
int n = m_ArrayFiles.GetCount();
for (int i =0; i<n; i++)
{
ItemText  = m_ArrayFiles[i];    //old file full path
int pos = ItemText.ReverseFind('\\');
nFileText = ItemText.Mid(pos+1);//filename
NewItemText.Format(_T("%s%s"), strPath, nFileText); //new file full path
MoveFile(ItemText, NewItemText);
//DeleteFile(arrayFiles[i]);
}
OnRefresh();
m_listVideo.Arrange(LVA_ALIGNTOP);
m_listVideo.SetRedraw(TRUE);
}
}
}
//
// 异步移动文件
void CPlayBackDlg::OnMoveToAsync()
{
//collect of selected video files
POSITION pos = m_listVideo.GetFirstSelectedItemPosition ();
if (!pos)
return;//所以空的视频没有让它弹出来
m_ArrayFiles.RemoveAll();
int nItem = 0;
while (pos)
{
nItem = m_listVideo.GetNextSelectedItem (pos);
m_ArrayFiles.Add (m_listVideo.GetFullPath(nItem));
}
CPathDialog  dlg( TEXT("Folder Selection"), 
TEXT("Select Image Directory to Browse"), NULL, this); //选择目的文件夹
// show path dialog
if ( dlg.DoModal() == IDOK )
{
CString strPath = dlg.GetPathName();
if (strPath != m_DIR)
{
AddBackSlash(strPath);
m_ArrayFiles.Add(strPath);//最后一个item为要传递目的文件夹
//
//start move file
m_hThreadMoveFiles = (HANDLE)_beginthreadex(NULL, 
0,
RunMoveFilesThread,
(LPVOID)&m_ArrayFiles,    //传递参数
0,
&ThreadID);
CloseHandle(m_hThreadMoveFiles);
}
}
}
附录: 里面用到的一个函数
/
//private
void CPlayBackDlg::AddBackSlash(CString &strPath)
{
int nLength = strPath.GetLength();
if (strPath.GetAt (nLength - 1) != '\\')
strPath += TEXT ("\\");
}





同步/异步移动文件列表框选中的文件相关推荐

  1. VB6调用API打开目标文件所在文件夹且选中目标文件

    Option Explicit ' 模块名称: mOpenFolderAndSetFileFocus '     作者: 唐细刚 '     时间: 2010-08-22 '     功能: VB6调 ...

  2. java获取文件列表,[javaSE] java获取文件列表

    递归测试 import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.Lis ...

  3. 读取云服务器文件列表,读取云服务器文件列表

    读取云服务器文件列表 内容精选 换一换 登录Windows操作系统的弹性云服务器时,需使用密码方式登录.因此,用户需先根据创建弹性云服务器时使用的密钥文件,获取该弹性云服务器初始安装时系统生成的管理员 ...

  4. 利用MT Photos生成的重复文件列表,删除重复文件

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.获取重复文件信息 二.使用步骤 1. 运行"MTphotos重复文件(生成excel).py" ...

  5. java文件删除选择框,从列表框中删除文件

    我正在为照片浏览器做一些应用 . 但我有两个问题: 现在我看到了所有文件,但是ComboBox1上应该只有一个名字的文件 . 如何修改我的代码来实现这一目标 . 第二:ListBox中文件的名称是相同 ...

  6. eclipse svn新增文件不显示在文件列表,只有修改文件可以提交!

    1.情景展示 eclipse修改的文件可以正常提交,但是新增的文件没有显示在提交列表中,导致无法提交! 2.解决方案 选中要提交的文件-->右键-->Team-->提交 勾选上这个选 ...

  7. 服务器默认文件列表,Cloud Foundry 默认文件路径列表

    本文致力于列一份cloudfoundry默认的文件分布路径列表,方便大家查询. vcap代码:/root/cloudfoundry/vcap config文件:/root/cloudfoundry/. ...

  8. php获取压缩文件列表,php获取所有文件并压缩

    /* * 压缩文件 * */ function zip($files){ $zipName = 'download.zip'; $zip = new \ZipArchive;//使用本类,linux需 ...

  9. python剪切文件如何恢复_用python实现的可以拷贝或剪切一个文件列表中的所有文件...

    # coding:utf-8 import os import sys def cut_and_paste_file(source, destination): ''' source: file pa ...

最新文章

  1. Redis 高级特性(3)—— 持久化及数据恢复
  2. 线程的状态:分离(detached)和joinable(可结合的)
  3. vuepress侧边栏配置_vuepress的侧边栏怎么动态生成
  4. Android自定义退出弹出框
  5. 两段式状态机不可能完成的任务
  6. python 函数的调用的时候参数的传递_Python Unittest;如何获取调用函数时传递的参数?...
  7. python多进程写入mysql_Python实现 多进程导入CSV数据到 MySQL
  8. php主页显示商品预览图代码,在ECSHOP留言板页面显示商品缩略图方法
  9. windows批处理for循环用法
  10. C语言_99 乘法表
  11. html浏览器pc端禁止缩放,如何禁止pc端浏览器缩放
  12. Adobe Flash player Activex控件问题解决方法
  13. C++primer 第五版 练习题【3.32】 P104页 个人解答
  14. 吾父马达加斯加之旅-2
  15. 思科 | VLAN 间路由实验(三层交换机)
  16. Python中的bbox_overlaps()函数详解
  17. 查看指定端口的占用情况
  18. 北大施柏鑫:从审稿人视角,谈谈怎么写一篇CVPR论文
  19. 西门子PLC动态加密催款程序
  20. “华为杯”第十五届中国研究生数学建模竞赛-对恐怖袭击事件记录数据的量化分析(Python,Pandas,Scikit-learn,PyTorch,Matplotlib,seaborn)

热门文章

  1. 兄弟割席:HTML5标准制定组织分裂
  2. python模块之paramiko学习二
  3. POJ 2513 Colored Sticks
  4. 框架学习之Hibernate 第十节 事务原理与分析
  5. c#中去掉字符串空格方法
  6. 关于域名解析到服务器的问题
  7. 怎样理解 MVVM ( Model-View-ViewModel ) ?
  8. XFire下根据WSDL生成Client Stub,并测试Client
  9. redis 哨兵 异步_redis 使用历程
  10. php编程对联,形容程序员的对联大全