1 #include "stdafx.h"
2 #include "CommonDialogMgr.h"
3 #include "MusicPlayer2.h"
4
CommonDialogMgr()5 CommonDialogMgr::CommonDialogMgr()
6 {
7 }
8
~CommonDialogMgr()9 CommonDialogMgr::~CommonDialogMgr()
10 {
11 }
12
DeleteAFile(HWND hwnd,wstring file)13 int CommonDialogMgr::DeleteAFile(HWND hwnd, wstring file)
14 {
15 file.push_back(L'\0'); // pFrom必须以两个\0结尾
16 static wstring title_delete = theApp.m_str_table.LoadText(L"TITLE_FILE_DELETE");
17 SHFILEOPSTRUCT FileOp{}; // 定义SHFILEOPSTRUCT结构对象
18 FileOp.hwnd = hwnd;
19 FileOp.wFunc = FO_DELETE; // 执行文件删除操作;
20 FileOp.pFrom = file.c_str();
21 FileOp.fFlags = FOF_ALLOWUNDO; // 此标志使删除文件备份到Windows回收站
22 FileOp.hNameMappings = NULL;
23 FileOp.lpszProgressTitle = title_delete.c_str();
24 return SHFileOperation(&FileOp); // 删除文件
25 }
26
DeleteFiles(HWND hwnd,const vector<wstring> & files)27 int CommonDialogMgr::DeleteFiles(HWND hwnd, const vector<wstring>& files)
28 {
29 wstring file_list;
30 for (const auto& file : files)
31 {
32 file_list += file;
33 file_list.push_back(L'\0');
34 }
35 return DeleteAFile(hwnd, file_list);
36 }
37
CopyAFile(HWND hwnd,wstring file_from,wstring file_to)38 int CommonDialogMgr::CopyAFile(HWND hwnd, wstring file_from, wstring file_to)
39 {
40 file_from.push_back(L'\0'); // pFrom必须以两个\0结尾
41 file_to.push_back(L'\0'); // pTo必须以两个\0结尾
42 static wstring title_copy = theApp.m_str_table.LoadText(L"TITLE_FILE_COPY");
43 SHFILEOPSTRUCT FileOp{};
44 FileOp.hwnd = hwnd;
45 FileOp.wFunc = FO_COPY;
46 FileOp.pFrom = file_from.c_str();
47 FileOp.pTo = file_to.c_str();
48 FileOp.fFlags = FOF_ALLOWUNDO;
49 FileOp.hNameMappings = NULL;
50 FileOp.lpszProgressTitle = title_copy.c_str();
51 return SHFileOperation(&FileOp);
52 }
53
CopyFiles(HWND hwnd,const vector<wstring> & files,wstring file_to)54 int CommonDialogMgr::CopyFiles(HWND hwnd, const vector<wstring>& files, wstring file_to)
55 {
56 wstring file_list;
57 for (const auto& file : files)
58 {
59 file_list += file;
60 file_list.push_back(L'\0');
61 }
62 return CopyAFile(hwnd, file_list, file_to);
63 }
64
MoveAFile(HWND hwnd,wstring file_from,wstring file_to)65 int CommonDialogMgr::MoveAFile(HWND hwnd, wstring file_from, wstring file_to)
66 {
67 file_from.push_back(L'\0'); // pFrom必须以两个\0结尾
68 file_to.push_back(L'\0'); // pTo必须以两个\0结尾
69 static wstring title_move = theApp.m_str_table.LoadText(L"TITLE_FILE_MOVE");
70 SHFILEOPSTRUCT FileOp{};
71 FileOp.hwnd = hwnd;
72 FileOp.wFunc = FO_MOVE;
73 FileOp.pFrom = file_from.c_str();
74 FileOp.pTo = file_to.c_str();
75 FileOp.fFlags = FOF_ALLOWUNDO;
76 FileOp.hNameMappings = NULL;
77 FileOp.lpszProgressTitle = title_move.c_str();
78 return SHFileOperation(&FileOp);
79 }
80
MoveFiles(HWND hwnd,const vector<wstring> & files,wstring file_to)81 int CommonDialogMgr::MoveFiles(HWND hwnd, const vector<wstring>& files, wstring file_to)
82 {
83 wstring file_list;
84 for (const auto& file : files)
85 {
86 file_list += file;
87 file_list.push_back(L'\0');
88 }
89 return MoveAFile(hwnd, file_list, file_to);
90 }
91