📄 copydlg.cpp
字号:
switch (message)
{
case WM_INITDIALOG:
{
pcfd->OnInitDialog(hDlg);
//ADD START TODA (from GSFinder ver.1.99)
SetTimer(hDlg, ID_TIMER_RESETTIME, TIMER_RESETTIME_INT, NULL);
//ADD END
return TRUE;
}
case WM_COMMAND:
{
int wmId = LOWORD(wParam);
int wmEvent = HIWORD(wParam);
switch (wmId)
{
case IDC_CANCELMODE:
{
pcfd->m_bCancel = TRUE;
EnableWindow(GetDlgItem(hDlg, IDC_CANCELMODE), FALSE);
SetWindowText(GetDlgItem(hDlg, IDC_FILE_NAME), IDS_MSG_CANCELING);
return TRUE;
}
}
break;
}
case WM_DLGCLOSE:
{
CloseHandle(pcfd->m_hThread);
//ADD START TODA (from GSFinder ver.1.99)
KillTimer(hDlg, ID_TIMER_RESETTIME);
//ADD END
EndDialog(hDlg, 0);
return TRUE;
}
case WM_SHOWOWMSG:
{
pcfd->ShowOverWriteMessage((LPTSTR)wParam, (LPTSTR)lParam);
return TRUE;
}
case WM_SHOWERRMSG:
{
pcfd->ShowErrorMessage((LPTSTR)wParam);
return TRUE;
}
case WM_SHOWFOLDEROWMSG:
{
pcfd->ShowFolderOverWriteMessage((LPTSTR)wParam);
return TRUE;
}
//ADD START TODA (from GSFinder ver.1.99)
case WM_TIMER:
{
if (wParam == ID_TIMER_RESETTIME && pcfd->m_bTimerReset)
SystemIdleTimerReset();
return TRUE;
}
//ADD END
}
return FALSE;
}
////////////////////////////////////////////////////////////////
int CCopyFileDlg::ShowCopyFileDlg(LPCTSTR lpszFolderFrom, LPCTSTR lpszFolderTo, LISTITEMINFO* lpliinfo, int nCount, BOOL bFileMove)
{
m_lpszFolderFrom = lpszFolderFrom;
m_lpszFolderTo = lpszFolderTo;
m_lpliinfo = lpliinfo;
m_nCount = nCount;
m_bFileMove = bFileMove;
//DEL START TODA
// // 堏摦愭偲堏摦尦偑摨偠応崌
// if (m_bFileMove && wcscmp(m_lpszFolderFrom, m_lpszFolderTo) == 0)
// {
// MessageBox(g_MainWnd.m_hWnd, IDS_MSG_CANNOTMOVE, NULL, MB_OK|MB_ICONSTOP);
// return IDCANCEL;
// }
//DE END
//ADD START TODA
//僼傽僀儖堏摦帪
if(m_bFileMove)
{
//儕僗僩偵愝掕偝傟偰偄傞僷僗傪慡偰僠僃僢僋
for(int i = 0; i < m_nCount; i++)
{
if (wcscmp(m_lpliinfo[i].szPath, m_lpszFolderTo) == 0)
{
MessageBox(g_MainWnd.m_hWnd, IDS_MSG_CANNOTMOVE, NULL, MB_OK|MB_ICONSTOP);
return IDCANCEL;
}
} //End of for
}
//ADD END
//僒僽僼僅儖僟僠僃僢僋傪峴偆
for (int i=0; i<m_nCount; i++)
{
if (m_lpliinfo[i].nItem == LIST_ITEM_FOLDER)
{
TCHAR szFrom[MAX_PATH];
TCHAR szTo[MAX_PATH];
//ADD START TODA (Windows僷僗僠僃僢僋)
wsprintf(szFrom, _T("%s\\%s"), m_lpliinfo[i].szPath, m_lpliinfo[i].szName);
if(wcsicmp(g_MainWnd.m_szWindowsPath, szFrom) == 0)
{
MessageBox(g_MainWnd.m_hWnd, IDS_MSG_PASTEERROR3, NULL, MB_OK|MB_ICONSTOP);
return IDCANCEL;
}
//ADD END
//MOD START TODA
// wsprintf(szFrom, _T("%s\\%s\\"), m_lpszFolderFrom, m_lpliinfo[i].szName);
wsprintf(szFrom, _T("%s\\%s\\"), m_lpliinfo[i].szPath, m_lpliinfo[i].szName);
//MOD END
wsprintf(szTo, _T("%s\\"), m_lpszFolderTo);
wcsupr(szFrom);
wcsupr(szTo);
if (wcsncmp(szFrom, szTo, wcslen(szFrom))==0)
{
if (m_bFileMove)
MessageBox(g_MainWnd.m_hWnd, IDS_MSG_CANNOTMOVE, NULL, MB_OK|MB_ICONSTOP);
else
MessageBox(g_MainWnd.m_hWnd, IDS_MSG_CANNOTCOPY, NULL, MB_OK|MB_ICONSTOP);
return IDCANCEL;
}
}
}
pcfd = this;
DisableUpdateNotify(); //ADD TODA (僼傽僀儖曄峏捠抦 from Y.Nagamidori)
DialogBox(g_hInst, (LPCTSTR)IDD_FILECOPY_DLG, g_MainWnd.m_hWnd, (DLGPROC)CopyFileDlgProc);
EnableUpdateNotify(); //ADD TODA (僼傽僀儖曄峏捠抦 from Y.Nagamidori)
pcfd = NULL;
return IDOK;
}
////////////////////////////////////////////////////////////////
LRESULT CALLBACK OverWriteDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
TCHAR szOldFilePath[MAX_PATH];
TCHAR szNewFilePath[MAX_PATH];
wcscpy(szOldFilePath, pcfd->m_lpszwParam);
wcscpy(szNewFilePath, pcfd->m_lpszlParam);
pcfd->m_nRetCode = RETCODE_NO;
LPTSTR lpszFileName = wcsrchr(szOldFilePath, _T('\\'));
if (lpszFileName)
lpszFileName++;
else
lpszFileName = szOldFilePath;
TCHAR szTemp[MAX_PATH];
DWORD dwAttr = GetFileAttributes(szOldFilePath);
if ((dwAttr&FILE_ATTRIBUTE_SYSTEM)==FILE_ATTRIBUTE_SYSTEM)
wsprintf(szTemp, IDS_FMT_OW_SYSTEM, lpszFileName);
else if ((dwAttr&FILE_ATTRIBUTE_READONLY)==FILE_ATTRIBUTE_READONLY)
wsprintf(szTemp, IDS_FMT_OW_READONLY, lpszFileName);
else
wsprintf(szTemp, IDS_FMT_OW_FILE, lpszFileName);
SetWindowText(GetDlgItem(hDlg, IDC_FILE_NAME), szTemp);
//Old
TCHAR szSize[64];
SHFILEINFO shfi;
SHGetFileInfo(szOldFilePath, NULL, &shfi, sizeof(shfi), SHGFI_LARGEICON | SHGFI_ICON);
SendMessage(GetDlgItem(hDlg, IDC_OLD_ICON), STM_SETIMAGE, IMAGE_ICON, (LPARAM)shfi.hIcon);
HANDLE hFile = CreateFile(szOldFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
wsprintf(szSize, _T("%d"), GetFileSize(hFile, NULL));
SetFormatInteger(szSize, 64);
wsprintf(szTemp, IDS_FMT_SIZEBYTE, szSize);
SetWindowText(GetDlgItem(hDlg, IDC_OLD_SIZE), szTemp);
TCHAR szTime[64];
SYSTEMTIME st;
FILETIME ft;
GetFileTime(hFile, NULL, NULL, &ft);
FileTimeToLocalFileTime(&ft, &ft);
FileTimeToSystemTime(&ft, &st);
SetFormatDateTime(&st, szTime, 64);
wsprintf(szTemp, IDS_FMT_UPDATETIME, szTime);
SetWindowText(GetDlgItem(hDlg, IDC_OLD_TIME), szTemp);
CloseHandle(hFile);
//New
SHGetFileInfo(szNewFilePath, NULL, &shfi, sizeof(shfi), SHGFI_LARGEICON | SHGFI_ICON);
SendMessage(GetDlgItem(hDlg, IDC_NEW_ICON), STM_SETIMAGE, IMAGE_ICON, (LPARAM)shfi.hIcon);
hFile = CreateFile(szNewFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
wsprintf(szSize, _T("%d"), GetFileSize(hFile, NULL));
SetFormatInteger(szSize, 64);
wsprintf(szTemp, IDS_FMT_SIZEBYTE, szSize);
SetWindowText(GetDlgItem(hDlg, IDC_NEW_SIZE), szTemp);
GetFileTime(hFile, NULL, NULL, &ft);
FileTimeToLocalFileTime(&ft, &ft);
FileTimeToSystemTime(&ft, &st);
SetFormatDateTime(&st, szTime, 64);
wsprintf(szTemp, IDS_FMT_UPDATETIME, szTime);
SetWindowText(GetDlgItem(hDlg, IDC_NEW_TIME), szTemp);
CloseHandle(hFile);
CenterWindow(hDlg);
ShowWindow(hDlg, SW_SHOW);
SetForegroundWindow(hDlg);
return TRUE;
}
case WM_COMMAND:
{
int wmId = LOWORD(wParam);
int wmEvent = HIWORD(wParam);
switch (wmId)
{
case IDC_BTN_YES:
{
pcfd->m_nRetCode = RETCODE_YES;
EndDialog(hDlg, IDOK);
return TRUE;
}
case IDC_BTN_NO:
{
pcfd->m_nRetCode = RETCODE_NO;
EndDialog(hDlg, IDCANCEL);
return TRUE;
}
case IDC_BTN_ALL_YES:
{
pcfd->m_nRetCode = RETCODE_ALL_YES;
EndDialog(hDlg, IDOK);
return TRUE;
}
case IDC_BTN_ALL_NO:
{
pcfd->m_nRetCode = RETCODE_ALL_NO;
EndDialog(hDlg, IDCANCEL);
return TRUE;
}
}
}
case WM_CLOSE:
{
pcfd->m_nRetCode = RETCODE_NO;
EndDialog(hDlg, IDCANCEL);
return TRUE;
}
}
return FALSE;
}
////////////////////////////////////////////////////////////////
int CCopyFileDlg::ShowOverWriteMessage(LPTSTR lpszwParam, LPTSTR lpszlParam)
{
m_lpszwParam = lpszwParam;
m_lpszlParam = lpszlParam;
m_bTimerReset = FALSE; //ADD TODA (from GSFinder ver.1.99)
DialogBox(g_hInst, (LPCTSTR)IDD_OVERWRITE_DLG, m_hWnd, (DLGPROC)OverWriteDlgProc);
m_bTimerReset = TRUE; //ADD TODA (from GSFinder ver.1.99)
return m_nRetCode;
}
void CCopyFileDlg::ShowErrorMessage(LPTSTR lspzFileName)
{
TCHAR szTemp[128];
wsprintf(szTemp, IDS_FMT_COPYERROR, lspzFileName);
MessageBox(m_hWnd, szTemp, NULL, MB_OK|MB_ICONSTOP);
}
////////////////////////////////////////////////////////////////
LRESULT CALLBACK FolderOverWriteDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
TCHAR szChild[MAX_PATH] = {0};
TCHAR szParent[MAX_PATH] = {0};
LPTSTR lpszTemp = wcsrchr(pcfd->m_lpszwParam, _T('\\'));
if (lpszTemp)
{
wcsncpy(szParent, pcfd->m_lpszwParam, lpszTemp - pcfd->m_lpszwParam);
wcscpy(szChild, ++lpszTemp);
}
else
{
wcscpy(szParent, pcfd->m_lpszwParam);
wcscpy(szChild, GetRootName());
}
lpszTemp = wcsrchr(szParent, _T('\\'));
if (lpszTemp)
wcscpy(szParent, ++lpszTemp);
else
wcscpy(szParent, GetRootName());
TCHAR szTemp[MAX_PATH];
wsprintf(szTemp, IDS_FMT_OW_FOLDER, szParent, szChild);
SetWindowText(GetDlgItem(hDlg, IDC_FOLDER_TEXT), szTemp);
CenterWindow(hDlg);
ShowWindow(hDlg, SW_SHOW);
SetForegroundWindow(hDlg);
return TRUE;
}
case WM_COMMAND:
{
int wmId = LOWORD(wParam);
int wmEvent = HIWORD(wParam);
switch (wmId)
{
case IDYES:
{
pcfd->m_nRetCode = IDOK;
EndDialog(hDlg, IDOK);
return TRUE;
}
case IDNO:
{
pcfd->m_nRetCode = IDCANCEL;
EndDialog(hDlg, IDCANCEL);
return TRUE;
}
}
}
case WM_CLOSE:
{
pcfd->m_nRetCode = IDCANCEL;
EndDialog(hDlg, IDCANCEL);
return TRUE;
}
}
return FALSE;
}
int CCopyFileDlg::ShowFolderOverWriteMessage(LPTSTR lpszwParam)
{
m_lpszwParam = lpszwParam;
m_bTimerReset = FALSE; //ADD TODA (from GSFinder ver.1.99)
DialogBox(g_hInst, (LPCTSTR)IDD_FOLDER_OVERWRITE_DLG, m_hWnd, (DLGPROC)FolderOverWriteDlgProc);
m_bTimerReset = TRUE; //ADD TODA (from GSFinder ver.1.99)
return m_nRetCode;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -