📄 gsfinder.cpp
字号:
//僂傿儞僪僂偺儗僀傾僂僩曄峏
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 + -