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

📄 gsfinder.cpp

📁 PocketPC上很好用的文件管理器,而且里面的封装性很好,学windows mobile开发的兄弟,值得一看
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			//僂傿儞僪僂偺儗僀傾僂僩曄峏
			g_MainWnd.RecalcLayout();
			//MOD END
			break;
		//僂傿儞僪僂偺傾僋僥傿僽/旕傾僋僥傿僽
		case WM_ACTIVATE:
			if(LOWORD(wParam) == WA_INACTIVE && g_bDraging)
			{
				g_MainWnd.OnDropCansel();
				g_bDraging = FALSE;
			}
			//MOD START TODA (from GSFinder ver.1.99)
			g_MainWnd.OnActivate(LOWORD(wParam));
			//MOD END
			break;
#ifdef __POCKET_PC
		case WM_SETTINGCHANGE:
			SHHandleWMSettingChange(hWnd, wParam, lParam, &g_sai);
			g_MainWnd.OnSettingChange(wParam);
			break;
#endif
		// 儊儌儕僇乕僪偺帺摦擣幆
		case WM_DEVICECHANGE:
			g_MainWnd.OnDeviceChange(TRUE);
			break;
		//婲摦僷儔儊乕僞桳傝
		case WM_COPYDATA:
		{
			COPYDATASTRUCT* pcds = (COPYDATASTRUCT*)lParam;
			if (pcds->dwData == WM_DROPFILES) {
				DWORD dwAttr = GetFileAttributes((LPTSTR)pcds->lpData);
				if (dwAttr != 0xFFFFFFFF && (dwAttr & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) {
					g_MainWnd.m_ListView.OnViewUpdate((LPCTSTR)pcds->lpData);
				}
			}
			break;
		}
		//Splitter張棟
		//儅僂僗儃僞儞墴壓奐巒
		case WM_LBUTTONDOWN:
			SetCapture(hWnd);
			g_bMoving = TRUE;
			if(g_MainWnd.m_bViewSide) {
				g_nStartPos = LOWORD(lParam);
				g_nLastWidth = g_MainWnd.m_nTreeViewWidth;
			} else {
				g_nStartPos = HIWORD(lParam);
				g_nLastHeight = g_MainWnd.m_nTreeViewHeight;
			}
			break;
		//儅僂僗堏摦拞
		case WM_MOUSEMOVE:
			if (g_bMoving)
				g_MainWnd.OnMouseMove(lParam, g_nStartPos, g_nLastWidth, g_nLastHeight);
			if(g_bDraging) {
				POINT pt={LOWORD(lParam), HIWORD(lParam)};
				g_MainWnd.OnMouseMove(pt);
			}
			break;
		//儅僂僗儃僞儞墴壓廔椆
		case WM_LBUTTONUP:
			ReleaseCapture();
			if(g_bMoving)
			{
				ListView_Arrange(g_MainWnd.m_ListView.m_hWnd, LVA_DEFAULT);
				InvalidateRect(g_MainWnd.m_hWnd, NULL, FALSE);
			}
			if(g_bDraging)
				g_MainWnd.OnLButtopUp();
			g_bMoving = FALSE;
			g_bDraging = FALSE;
			break;
		//僼僅乕僇僗愝掕
		case WM_SETFOCUS:
			SetFocus(g_MainWnd.m_ListView.m_hWnd);
			break;
		//儅僂僗儃僞儞塃僋儕僢僋
		case WM_RBUTTONDOWN:
			MessageBox(NULL,_T("CLICK"),_T("TEST"),MB_OK);
			break;
		//億僢僾傾僢僾儊僯儏乕僋儘乕僘
		case WM_EXITMENULOOP:
			g_MainWnd.m_ListView.OnExitMenuLoop();
			g_MainWnd.m_TreeView.OnExitMenuLoop();
			break;
		//ADD START TODA (僼傽僀儖曄峏捠抦 from Y.Nagamidori)
		case WM_UPDATENOTIFY:
		{
			MSG msg;
			while (PeekMessage(&msg, g_MainWnd.m_hWnd, WM_UPDATENOTIFY, WM_UPDATENOTIFY, PM_REMOVE));
			g_MainWnd.OnDeviceChange(FALSE);
			break;
		}
		//ADD END
		//僞僀儅捠抦
		case WM_TIMER:
			if (wParam == ID_TIMER_TVSELECTED)
				g_MainWnd.m_TreeView.OnKillFocus();
			if(wParam == ID_TIMER_DEVICECHANGE)
				g_MainWnd.OnDeviceChange(FALSE, FALSE);
			//偦傟埲奜偼def
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
	}

	return 0;
}

////////////////////////////////////////////////////////////////
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
		{
#ifdef __POCKET_PC
			SHINITDLGINFO shidi;
			shidi.dwMask = SHIDIM_FLAGS;
			shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN;
			shidi.hDlg = hDlg;
			SHInitDialog(&shidi);

			//僒僀僘挷惍 (Edit)
			RECT rc;
			POINT pt;
			GetWindowRect(GetDlgItem(hDlg, IDC_EDIT_MEMORY), &rc);
			pt.x = rc.left; pt.y = rc.top;
			ScreenToClient(hDlg, &pt);
			//ADD START TODA
			DWORD dwX = GetSystemMetrics(SM_CXSCREEN);
			DWORD dwY = GetSystemMetrics(SM_CYSCREEN);
			if(VGACheck())
			{
				dwX -= 65;
				dwY -= 420;
			}
			else
			{
				dwX -= 32;
				dwY -= 210;
			}
			//ADD END
			MoveWindow(GetDlgItem(hDlg, IDC_EDIT_MEMORY), pt.x, pt.y, dwX, dwY, TRUE); //MOD TODA
#else
			CenterWindow(hDlg);
#endif
			ULARGE_INTEGER nFreeBytesAvailableToCaller;
			ULARGE_INTEGER nTotalNumberOfBytes;
			ULARGE_INTEGER nTotalNumberOfFreeBytes;

			//儊儌儕巊梡忬嫷偺昞帵
			TCHAR szTemp[64];
			TCHAR szText[1024] = IDS_MEMORYSTATUS;
			/////////////////////////////////////////////////////
			//僾儘僌儔儉儊儌儕
			wcscat(szText, IDS_FMT_PROGMEM);
			MEMORYSTATUS ms;
			ms.dwLength = sizeof(ms);
			GlobalMemoryStatus(&ms);
			SetFormatSize(ms.dwAvailPhys, szTemp, _T("%s KB"), _T("%s MB"));
			wcscat(szText, szTemp);
			wcscat(szText, _T(" / "));
			SetFormatSize(ms.dwTotalPhys, szTemp, _T("%s KB"), _T("%s MB"));
			wcscat(szText, szTemp);

			/////////////////////////////////////////////////////
			//僆僽僕僃僋僩僗僩傾
			if (GetDiskFreeSpaceEx(_T("\\"), &nFreeBytesAvailableToCaller, &nTotalNumberOfBytes, &nTotalNumberOfFreeBytes))
			{

				wcscat(szText, IDS_FMT_DATAMEM);
				int	nTemp = (int)nTotalNumberOfFreeBytes.QuadPart;
				SetFormatSize(nTemp, szTemp, _T("%s KB"), _T("%s MB"));
				wcscat(szText, szTemp);
				wcscat(szText, _T(" / "));
				nTemp = (int)nTotalNumberOfBytes.QuadPart;
				SetFormatSize(nTemp, szTemp, _T("%s KB"), _T("%s MB"));
				wcscat(szText, szTemp);
			}
			/////////////////////////////////////////////////////
			//僗僩儗乕僕僇乕僪
			TCHAR szPath[MAX_PATH] = _T("\\*.*");
			WIN32_FIND_DATA wfd;
			HANDLE hFind = FindFirstFile(szPath, &wfd);
			if (hFind != INVALID_HANDLE_VALUE) {
				do {
					if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
						(wfd.dwFileAttributes & FILE_ATTRIBUTE_TEMPORARY)) {
						wsprintf(szPath, _T("\\%s\\"), wfd.cFileName);
						if (GetDiskFreeSpaceEx(szPath, &nFreeBytesAvailableToCaller, &nTotalNumberOfBytes, &nTotalNumberOfFreeBytes)) {
							wsprintf(szTemp, _T("\r\n%s : "), wfd.cFileName);
							wcscat(szText, szTemp);
							int	nTemp = (int)nTotalNumberOfFreeBytes.QuadPart;
							SetFormatSize(nTemp, szTemp, _T("%s KB"), _T("%s MB"));
							wcscat(szText, szTemp);
							wcscat(szText, _T(" / "));
							nTemp = (int)nTotalNumberOfBytes.QuadPart;
							SetFormatSize(nTemp, szTemp, _T("%s KB"), _T("%s MB"));
							wcscat(szText, szTemp);
						}
					}
				}
				while (FindNextFile(hFind, &wfd));
				FindClose(hFind);
			}

			SetWindowText(GetDlgItem(hDlg, IDC_EDIT_MEMORY), szText);
			return TRUE;
		}
		case WM_COMMAND:
			if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL))
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
#ifdef __POCKET_PC
		case WM_PAINT:
			return DefDlgPaintProc(hDlg, wParam, lParam);
		case WM_CTLCOLORSTATIC:
			return DefDlgCtlColorStaticProc(hDlg, wParam, lParam);
#endif
	}
    return FALSE;
}

///////////////////////////////////////////////////////////////
DWORD GetVersion()
{
	static DWORD ver = 0;
	if(ver == 0)
	{
		TCHAR szVer[16];
		OSVERSIONINFO osinf;
		GetVersionEx(&osinf);
		wsprintf(szVer, _T("%d%02d"), osinf.dwMajorVersion, osinf.dwMinorVersion);
		ver = wcstol(szVer, 0, 10);
	}
	return ver;
}

///////////////////////////////////////////////////////////////
BOOL VGACheck()
{
	static int nMode=0;

	if(nMode == 0 && GetVersion() >= 421)
	{
		nMode = 2;
		//VGA儌乕僪側偺偐敾掕偡傞
		int nMenu = GetSystemMetrics(SM_CYMENU);
		int nWidth  = GetSystemMetrics(SM_CXSCREEN);
		int nHeight = GetSystemMetrics(SM_CYSCREEN);

		if((nMenu == 52) &&
		   (nWidth == 480 && nHeight == 640 ||
			nWidth == 640 && nHeight == 480))
			nMode = 1;
	}

	//VGA偺応崌
	if(nMode == 1) return TRUE;

	//VGA埲奜偺応崌
	return FALSE;
}

///////////////////////////////////////////////////////////////
void CenterWindow(HWND hWnd)
{
	RECT rctDesktop, rctWnd;
	GetWindowRect(g_MainWnd.m_hWnd, &rctDesktop);
	GetWindowRect(hWnd, &rctWnd);

	int nX = ((rctDesktop.right - rctDesktop.left)-(rctWnd.right - rctWnd.left))/2;
	int nY = ((rctDesktop.bottom - rctDesktop.top)-(rctWnd.bottom - rctWnd.top))/2;
#ifdef __POCKET_PC
	if (nY < 26) nY = 26;
#else
	if (nY < 0) nY = 0;
#endif

	SetWindowPos(hWnd, HWND_TOP, nX, nY, 0, 0, SWP_NOSIZE|SWP_NOZORDER);
}

////////////////////////////////////////////////////////////////
void SetKickExt(LPTSTR lpszFileName)
{
	LPTSTR lpszTemp = wcsrchr(lpszFileName, _T('.'));
	if (lpszTemp)
		*lpszTemp = NULL;
}

////////////////////////////////////////////////////////////////
void SetExtFromFileName(LPTSTR lpszFileName, LPTSTR lpszFileNameWithExt)
{
	LPTSTR lpszTemp = wcsrchr(lpszFileNameWithExt, _T('.'));
	if (lpszTemp)
		wcscat(lpszFileName, lpszTemp);
}

#ifdef __POCKET_PC
////////////////////////////////////////////////////////////////
DWORD GetIMStatus()
{
	SIPINFO si;
	memset(&si, 0, sizeof(si));
	si.cbSize = sizeof(si);
	SipGetInfo(&si);
	return si.fdwFlags;
}
#endif

////////////////////////////////////////////////////////////////
void SetFormatInteger(LPTSTR lpszInt, UINT nSize)
{
	LPTSTR lpszTemp = new TCHAR[nSize];
	memset(lpszTemp, 0, sizeof(TCHAR)*nSize);
	GetNumberFormat(LOCALE_USER_DEFAULT, 0, lpszInt, NULL, lpszTemp, nSize);
	memset(lpszInt, 0, sizeof(TCHAR)*nSize);

	LPTSTR lpszSep = wcschr(lpszTemp, g_szDecSep[0]);
	if (lpszSep)
		wcsncpy(lpszInt, lpszTemp, lpszSep-lpszTemp);
	else
		wcscpy(lpszInt, lpszTemp);
	delete[] lpszTemp;
}

////////////////////////////////////////////////////////////////
void SetFormatDouble(LPTSTR lpszDouble, UINT nSize)
{
	LPTSTR lpszTemp = new TCHAR[nSize];
	memset(lpszTemp, 0, sizeof(TCHAR)*nSize);
	GetNumberFormat(LOCALE_USER_DEFAULT, 0, lpszDouble, NULL, lpszTemp, nSize);
	memset(lpszDouble, 0, sizeof(TCHAR)*nSize);
	wcscpy(lpszDouble, lpszTemp);
	delete[] lpszTemp;
}

////////////////////////////////////////////////////////////////
void SetFormatDateTime(SYSTEMTIME* lpst, LPTSTR lpszBuff, UINT nSize, BOOL bToday)
{
	//MOD START TODA (巊梡儊儌儕岠棪壔/昞帵曽朄巜掕)
	memset(lpszBuff, 0x00, sizeof(TCHAR)*nSize);

	if(bToday)
	{
		SYSTEMTIME sys;
		GetLocalTime(&sys);

		//摉擔埲奜偺応崌偼擔晅昞帵 摉擔偺応崌偼帪娫昞帵
		if(lpst->wYear  != sys.wYear  ||
		   lpst->wMonth != sys.wMonth ||
		   lpst->wDay   != sys.wDay   )
			GetDateFormat(LOCALE_USER_DEFAULT, DATE_SHORTDATE, lpst, NULL, lpszBuff, nSize);
		else
			GetTimeFormat(LOCALE_USER_DEFAULT, 0, lpst, NULL, lpszBuff, nSize);
	}
	else
	{
		//擔晅/帪娫昞帵
		GetDateFormat(LOCALE_USER_DEFAULT, DATE_SHORTDATE, lpst, NULL, lpszBuff, nSize);
		wcscat(lpszBuff, _T(" "));
		GetTimeFormat(LOCALE_USER_DEFAULT, 0, lpst, NULL, (lpszBuff+wcslen(lpszBuff)), (nSize-wcslen(lpszBuff)));
	}
	//MOD END
}

////////////////////////////////////////////////////////////////
UINT GetFileAndFolderCountInFolder(LPTSTR lpszPath)
{	
	UINT nFileCount = 0;
	TCHAR szTemp[MAX_PATH+4];
	wsprintf(szTemp, _T("%s\\*.*"), lpszPath);

	WIN32_FIND_DATA finddata;
	HANDLE hFind = FindFirstFile(szTemp, &finddata);
	if (hFind != INVALID_HANDLE_VALUE)
	{
		BOOL bRet = TRUE;
		do
		{
			if ((finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
			{
				LPTSTR lpszChildPath = new TCHAR[wcslen(lpszPath)+wcslen(finddata.cFileName)+2];
				wsprintf(lpszChildPath, _T("%s\\%s"), lpszPath, finddata.cFileName);
				nFileCount += GetFileAndFolderCountInFolder(lpszChildPath);
				nFileCount += 1;
				delete[] lpszChildPath;
			}
			else
				nFileCount += 1; //僼傽僀儖
		}
		while (FindNextFile(hFind, &finddata));
		FindClose(hFind);
	}

	return nFileCount;
}

////////////////////////////////////////////////////////////////
UINT GetFileAndFolderCount(LPCTSTR lpszPath, LISTITEMINFO* lpliinfo, int nCount)
{
	UINT nFileCount = 0;
	for (int i=0; i<nCount; i++)
	{
		//僒僀僘庢摼丄僇僂儞僩奐巒
		if (lpliinfo[i].nItem == LIST_ITEM_FOLDER)
		{
			TCHAR szPath[MAX_PATH];
			wsprintf(szPath, _T("%s\\%s"), lpszPath, lpliinfo[i].szName);
			nFileCount += GetFileAndFolderCountInFolder(szPath);
			nFileCount += 1;
		}
		else if (lpliinfo[i].nItem == LIST_ITEM_FILE)
			nFileCount += 1;
	}
	return nFileCount;
}

////////////////////////////////////////////////////////////////
//僼僅儖僟偺儕儞僋僠僃僢僋

⌨️ 快捷键说明

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