⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 copydlg.cpp

📁 PocketPC上很好用的文件管理器,而且里面的封装性很好,学windows mobile开发的兄弟,值得一看
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -