xref: /MusicPlayer2/MusicPlayer2/CommonDialogMgr.cpp (revision 26cefa3ce191eaff4754c23aa55c7bab36bd518b)
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