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

📄 listsort.cpp

📁 PocketPC上很好用的文件管理器,而且里面的封装性很好,学windows mobile开发的兄弟,值得一看
💻 CPP
字号:
#include "GSFinder.h"

///////////////////////////////////////////////////////////////
int CALLBACK ListSortCompareFuncByName(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
	LISTITEMCOMP* pList1 = (LISTITEMCOMP*)lParam1;
	LISTITEMCOMP* pList2 = (LISTITEMCOMP*)lParam2;
	BOOL bRaise = (BOOL)lParamSort;

	if (pList1->nItem < pList2->nItem)
		return -1;
	else if (pList1->nItem == pList2->nItem)
	{
//MOD START TODA 暥帤楍斾妑偺崅懍壔 (from Y.Nagamidori)
		/*TCHAR szName1[MAX_PATH];
		TCHAR szName2[MAX_PATH];
		wcscpy(szName1, pList1->lpszName);
		wcsupr(szName1);
		wcscpy(szName2, pList2->lpszName);
		wcsupr(szName2);
		return bRaise ? wcscmp(szName1, szName2):wcscmp(szName2, szName1);*/
		
		return bRaise ? wcsicmp(pList1->lpszName, pList2->lpszName) : wcscmp(pList2->lpszName, pList1->lpszName);
//MOD END
	}
	else if (pList1->nItem > pList2->nItem)
		return 1;

	return 0;
}

///////////////////////////////////////////////////////////////
int CALLBACK ListSortCompareFuncByExt(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
	LISTITEMCOMP* pList1 = (LISTITEMCOMP*)lParam1;
	LISTITEMCOMP* pList2 = (LISTITEMCOMP*)lParam2;
	BOOL bRaise = (BOOL)lParamSort;

	//MOD START TODA 暥帤楍斾妑偺崅懍壔 (from Y.Nagamidori)
	if (pList1->nItem < pList2->nItem)
		return -1;
	else if (pList1->nItem == pList2->nItem)
	{
		/*TCHAR szName1[MAX_PATH];
		TCHAR szName2[MAX_PATH];
		wcscpy(szName1, pList1->lpszName);
		wcsupr(szName1);
		wcscpy(szName2, pList2->lpszName);
		wcsupr(szName2);
		if (pList1->nItem == LIST_ITEM_FILE)
		{
			LPCTSTR lpszExt1 = wcschr(szName1,_T('.'));
			LPCTSTR lpszExt2 = wcschr(szName2,_T('.'));
			if (lpszExt1 && lpszExt2)
			{
				if (bRaise)
				{
					int nRet = wcscmp(lpszExt1, lpszExt2);
					return nRet?nRet:wcscmp(szName1, szName2);
				}	
				else
				{
					int nRet = wcscmp(lpszExt2, lpszExt1);
					return nRet?nRet:wcscmp(szName2, szName1);
				}
			}
			else if (lpszExt1==NULL)
				return bRaise?-1:1;
			else
				return bRaise?1:-1;
		}
		else
			return wcscmp(szName1, szName2);*/
		
		if (pList1->nItem == LIST_ITEM_FILE)
		{
			LPCTSTR lpszExt1 = wcsrchr(pList1->lpszName,_T('.'));	//MOD TODA
			LPCTSTR lpszExt2 = wcsrchr(pList2->lpszName,_T('.'));	//MOD TODA
			if (lpszExt1 && lpszExt2)
			{
				if (bRaise)
				{
					int nRet = wcsicmp(lpszExt1, lpszExt2);
					return nRet ? nRet : wcsicmp(pList1->lpszName, pList2->lpszName);
				}	
				else
				{
					int nRet = wcsicmp(lpszExt2, lpszExt1);
					return nRet ? nRet : wcsicmp(pList2->lpszName, pList1->lpszName);
				}
			}
			else if (lpszExt1 == NULL)
				return bRaise ? -1 : 1;
			else
				return bRaise ? 1 : -1;
		}
		else
			return wcsicmp(pList1->lpszName, pList2->lpszName);
	}
	else if (pList1->nItem > pList2->nItem)
		return 1;
	//MOD END

	return 0;
}
///////////////////////////////////////////////////////////////
int CALLBACK ListSortCompareFuncBySize(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
	LISTITEMCOMP* pList1 = (LISTITEMCOMP*)lParam1;
	LISTITEMCOMP* pList2 = (LISTITEMCOMP*)lParam2;
	BOOL bRaise = (BOOL)lParamSort;

	//MOD START TODA 暥帤楍斾妑偺崅懍壔 (from Y.Nagamidori)
	if (pList1->nItem < pList2->nItem)
		return -1;
	else if (pList1->nItem == pList2->nItem)
	{
		/*TCHAR szName1[MAX_PATH];
		TCHAR szName2[MAX_PATH];
		wcscpy(szName1, pList1->lpszName);
		wcsupr(szName1);
		wcscpy(szName2, pList2->lpszName);
		wcsupr(szName2);
		
		if (pList1->nItem == LIST_ITEM_FILE)
		{
			if (bRaise)
			{
				if (pList1->dwSize < pList2->dwSize)
					return -1;
				else if (pList1->dwSize == pList2->dwSize)
					return 0;
				else if (pList1->dwSize > pList2->dwSize)
					return 1;
			}
			else
			{
				if (pList1->dwSize < pList2->dwSize)
					return 1;
				else if (pList1->dwSize == pList2->dwSize)
					return 0;
				else if (pList1->dwSize > pList2->dwSize)
					return -1;
			}
		}
		else
			return wcscmp(szName1, szName2);*/

		if (pList1->nItem == LIST_ITEM_FILE)
		{
			if (bRaise)
			{
				if (pList1->dwSize < pList2->dwSize)
					return -1;
				else if (pList1->dwSize == pList2->dwSize)
					return 0;
				else if (pList1->dwSize > pList2->dwSize)
					return 1;
			}
			else
			{
				if (pList1->dwSize < pList2->dwSize)
					return 1;
				else if (pList1->dwSize == pList2->dwSize)
					return 0;
				else if (pList1->dwSize > pList2->dwSize)
					return -1;
			}
		}
		else
			return wcsicmp(pList1->lpszName, pList2->lpszName);
	}
	else if (pList1->nItem > pList2->nItem)
		return 1;
	//MOD END

	return 0;
}
///////////////////////////////////////////////////////////////
int CALLBACK ListSortCompareFuncByTime(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
	//MOD START TODA 暥帤楍斾妑偺崅懍壔 (from Y.Nagamidori)
	LISTITEMCOMP* pList1 = (LISTITEMCOMP*)lParam1;
	LISTITEMCOMP* pList2 = (LISTITEMCOMP*)lParam2;
	BOOL bRaise = (BOOL)lParamSort;

	if (pList1->nItem < pList2->nItem)
		return -1;
	else if (pList1->nItem == pList2->nItem)
		return bRaise ? CompareFileTime(&pList1->ft, &pList2->ft) : CompareFileTime(&pList2->ft, &pList1->ft);
	else if (pList1->nItem > pList2->nItem)
		return 1;
	//MOD END

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -