📄 fileproperty.cpp
字号:
//FileProperty.cpp
#include "GSFinder.h"
#include "FileProperty.h"
CFileProperty* pfp = NULL;
////////////////////////////////////////////////////////////////
void CFileProperty::PPFileShortcut_InitDialog(HWND hDlg)
{
#ifdef __POCKET_PC
SetDlgItemText(hDlg, IDC_TITLE, m_szTitle);
#endif
SetWindowText(GetDlgItem(hDlg, IDC_SHORTCUT_NAME), m_lpliinfo[0].szName);
TCHAR szPath[MAX_PATH];
wsprintf(szPath, _T("%s\\%s"), m_lpszCurrentFolder, m_lpliinfo[0].szName);
SHFILEINFO si;
//僞乕僎僢僩偺忣曬傪庢摼
TCHAR szTarget[MAX_PATH];
if (SHGetShortcutTarget(szPath, szTarget, MAX_PATH))
{
SetWindowText(GetDlgItem(hDlg, IDC_EDIT_TARGET_PATH), szTarget);
wcscpy(m_szOldTarget, szTarget);
wcscpy(m_szNewTarget, szTarget);
TCHAR szTemp[MAX_PATH] = {0};
if (szTarget[0] == _T('\"'))
{
LPTSTR lpszTemp = szTarget;
lpszTemp++;
LPTSTR lpszMark = wcschr(lpszTemp, _T('"'));
if (lpszMark)
wcsncpy(szTemp, lpszTemp, lpszMark-lpszTemp);
else
wcsncpy(szTemp, lpszTemp, wcslen(lpszTemp)-1);
}
else
{
LPTSTR lpszTemp = wcschr(szTarget, _T(' '));
if (lpszTemp)
wcsncpy(szTemp, szTarget, lpszTemp-szTarget);
else
wcscpy(szTemp, szTarget);
}
DWORD dwAttr = GetFileAttributes(szTemp);
if (dwAttr != 0xFFFFFFFF)
{
SHGetFileInfo(szTemp, NULL, &si, sizeof(si), SHGFI_LARGEICON | SHGFI_ICON | SHGFI_TYPENAME);
SendMessage(GetDlgItem(hDlg, IDC_TARGET_ICON), STM_SETIMAGE, IMAGE_ICON, (LPARAM)si.hIcon);
SetWindowText(GetDlgItem(hDlg, IDC_TARGET_TYPE), si.szTypeName);
}
else
SetWindowText(GetDlgItem(hDlg, IDC_TARGET_TYPE), IDS_MSG_INVALIDSHORTCUT);
}
else
{
SetWindowText(GetDlgItem(hDlg, IDC_TARGET_TYPE), IDS_MSG_INVALIDSHORTCUT);
EnableWindow(GetDlgItem(hDlg, IDC_EDIT_TARGET_PATH), FALSE);
}
}
////////////////////////////////////////////////////////////////
LRESULT CALLBACK PPFileShortcutProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
pfp->PPFileShortcut_InitDialog(hDlg);
return TRUE;
}
break;
case WM_COMMAND:
{
if (HIWORD(wParam)==EN_CHANGE)
{
if (GetDlgItem(hDlg, IDC_EDIT_TARGET_PATH)==(HWND)lParam)
{
GetWindowText(GetDlgItem(hDlg, IDC_EDIT_TARGET_PATH), pfp->m_szNewTarget, MAX_PATH);
return TRUE;
}
}
break;
}
break;
#ifdef __POCKET_PC
case WM_PAINT:
return DefDlgPaintProc(hDlg, wParam, lParam);
case WM_CTLCOLORSTATIC:
return DefDlgCtlColorStaticProc(hDlg, wParam, lParam);
#endif
}
return FALSE;
}
////////////////////////////////////////////////////////////////
void CFileProperty::PPFileMain_OnChkReadonly(HWND hDlg)
{
if (SendMessage(GetDlgItem(hDlg, IDC_CHK_READONLY), BM_GETCHECK, 0, 0))
m_dwAttr |= FILE_ATTRIBUTE_READONLY;
else
m_dwAttr ^= FILE_ATTRIBUTE_READONLY;
}
void CFileProperty::PPFileMain_OnChkHidden(HWND hDlg)
{
if (SendMessage(GetDlgItem(hDlg, IDC_CHK_HIDDEN), BM_GETCHECK, 0, 0))
m_dwAttr |= FILE_ATTRIBUTE_HIDDEN;
else
m_dwAttr ^= FILE_ATTRIBUTE_HIDDEN;
}
void CFileProperty::PPFileMain_OnChkArchive(HWND hDlg)
{
if (SendMessage(GetDlgItem(hDlg, IDC_CHK_ARCHIVE), BM_GETCHECK, 0, 0))
m_dwAttr |= FILE_ATTRIBUTE_ARCHIVE;
else
m_dwAttr ^= FILE_ATTRIBUTE_ARCHIVE;
}
////////////////////////////////////////////////////////////////
void CFileProperty::PPFileMain_InitDialog(HWND hDlg)
{
#ifdef __POCKET_PC
SetDlgItemText(hDlg, IDC_TITLE, m_szTitle);
#endif
TCHAR szTemp[128];
wcscpy(m_szNewName, m_lpliinfo[0].szName);
//僼傽僀儖柤
if (g_MainWnd.m_ListView.m_Settings.bNotShowExt && m_lpliinfo[0].nItem == LIST_ITEM_FILE)
{
TCHAR szName[MAX_PATH];
wcscpy(szName, m_lpliinfo[0].szName);
SetKickExt(szName);
SetWindowText(GetDlgItem(hDlg, IDC_EDIT_FILENAME), szName);
}
else
SetWindowText(GetDlgItem(hDlg, IDC_EDIT_FILENAME), m_lpliinfo[0].szName);
//応強
if (!wcslen(m_lpszCurrentFolder))
SetWindowText(GetDlgItem(hDlg, IDC_FILE_PATH), GetRootName());
else
SetWindowText(GetDlgItem(hDlg, IDC_FILE_PATH), m_lpszCurrentFolder);
//ADD START TODA (儖乕僩敾掕)
BOOL bRoot = FALSE;
if(wcsicmp(m_lpliinfo[0].szName, GetRootName())==0)
bRoot = TRUE;
//ADD END
TCHAR szFilePath[MAX_PATH];
//ADD START TODA
if(bRoot)
wcscpy(szFilePath, _T("\\"));
else
//ADD END
wsprintf(szFilePath, _T("%s\\%s"), m_lpszCurrentFolder, m_lpliinfo[0].szName);
//僼傽僀儖忣曬庢摼
SHFILEINFO si;
SHGetFileInfo(szFilePath, NULL, &si, sizeof(si), SHGFI_LARGEICON | SHGFI_ICON | SHGFI_TYPENAME);
//ADD START TODA (儖乕僩梡傾僀僐儞愝掕)
if(bRoot)
{
//儖乕僩梡傾僀僐儞
HICON hIcon = LoadIcon(g_hInst, (LPCTSTR)IDI_ROOT_L);
SendMessage(GetDlgItem(hDlg, IDC_FILE_ICON), STM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon);
DestroyIcon(hIcon);
}
else
//ADD END
//傾僀僐儞
SendMessage(GetDlgItem(hDlg, IDC_FILE_ICON), STM_SETIMAGE, IMAGE_ICON, (LPARAM)si.hIcon);
//僼傽僀儖傪奐偔
HANDLE hFile = CreateFile(szFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
//僒僀僘
DWORD dwSize = 0;
dwSize = GetFileSize(hFile, NULL);
if (dwSize != 0xFFFFFFFF)
{
TCHAR szSize[64];
TCHAR szKSize[64];
wsprintf(szSize, _T("%d"), dwSize);
SetFormatInteger(szSize, 64);
SetFormatSize(dwSize, szKSize, _T("%s"), _T("%s"));
if (dwSize < 1024000)
wsprintf(szTemp, IDS_FMT_KBBYTE, szKSize, szSize);
else
wsprintf(szTemp, IDS_FMT_MBBYTE, szKSize, szSize);
SetWindowText(GetDlgItem(hDlg, IDC_FILE_SIZE), szTemp);
}
else
SetWindowText(GetDlgItem(hDlg, IDC_FILE_SIZE), _T(""));
//嶌惉擔帪
TCHAR szTime[64];
FILETIME ftCreate;
ftCreate.dwHighDateTime = 0;
ftCreate.dwLowDateTime = 0;
SYSTEMTIME st;
if (GetFileTime(hFile, &ftCreate, NULL, NULL) && ftCreate.dwHighDateTime && ftCreate.dwLowDateTime)
{
FileTimeToLocalFileTime(&ftCreate, &ftCreate);
FileTimeToSystemTime(&ftCreate, &st);
SetFormatDateTime(&st, szTime, sizeof(szTime)); //MOD TODA
wsprintf(szTemp, _T("%s"), szTime);
SetWindowText(GetDlgItem(hDlg, IDC_FILE_CREATE_TIME), szTemp);
}
else
SetWindowText(GetDlgItem(hDlg, IDC_FILE_CREATE_TIME), _T(""));
//峏怴擔帪
FILETIME ftUpdate;
if (GetFileTime(hFile, NULL, NULL, &ftUpdate) && ftUpdate.dwHighDateTime && ftUpdate.dwLowDateTime)
{
FileTimeToLocalFileTime(&ftUpdate, &ftUpdate);
FileTimeToSystemTime(&ftUpdate, &st);
SetFormatDateTime(&st, szTime, sizeof(szTime)); //MOD TODA
wsprintf(szTemp, _T("%s"), szTime);
SetWindowText(GetDlgItem(hDlg, IDC_FILE_WRITE_TIME), szTemp);
}
else
SetWindowText(GetDlgItem(hDlg, IDC_FILE_WRITE_TIME), _T(""));
CloseHandle(hFile);
//懏惈
m_dwAttr = GetFileAttributes(szFilePath);
if (m_dwAttr != 0xFFFFFFFF && m_lpliinfo[0].nItem == LIST_ITEM_FILE)
{
if ((m_dwAttr&FILE_ATTRIBUTE_READONLY)==FILE_ATTRIBUTE_READONLY)
SendMessage(GetDlgItem(hDlg, IDC_CHK_READONLY), BM_SETCHECK, 1, 0);
if ((m_dwAttr&FILE_ATTRIBUTE_HIDDEN)==FILE_ATTRIBUTE_HIDDEN)
SendMessage(GetDlgItem(hDlg, IDC_CHK_HIDDEN), BM_SETCHECK, 1, 0);
if ((m_dwAttr&FILE_ATTRIBUTE_ARCHIVE)==FILE_ATTRIBUTE_ARCHIVE)
SendMessage(GetDlgItem(hDlg, IDC_CHK_ARCHIVE), BM_SETCHECK, 1, 0);
if ((m_dwAttr&FILE_ATTRIBUTE_SYSTEM)==FILE_ATTRIBUTE_SYSTEM)
SendMessage(GetDlgItem(hDlg, IDC_CHK_SYSTEM), BM_SETCHECK, 2, 0);
}
else
{
EnableWindow(GetDlgItem(hDlg, IDC_CHK_READONLY), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_CHK_HIDDEN), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_CHK_ARCHIVE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_CHK_SYSTEM), FALSE);
}
m_dwOrgAttr = m_dwAttr;
//庬椶
if ((m_dwAttr&FILE_ATTRIBUTE_INROM) == FILE_ATTRIBUTE_INROM)
{
wsprintf(szTemp, _T("%s (in ROM)"), si.szTypeName);
SetWindowText(GetDlgItem(hDlg, IDC_FILE_TYPE), szTemp);
}
else
SetWindowText(GetDlgItem(hDlg, IDC_FILE_TYPE), si.szTypeName);
}
////////////////////////////////////////////////////////////////
LRESULT CALLBACK PPFileMainProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
pfp->PPFileMain_InitDialog(hDlg);
return TRUE;
}
case WM_COMMAND:
{
if (HIWORD(wParam)==BN_CLICKED)
{
if (GetDlgItem(hDlg, IDC_CHK_READONLY)==(HWND)lParam)
pfp->PPFileMain_OnChkReadonly(hDlg);
else if (GetDlgItem(hDlg, IDC_CHK_HIDDEN)==(HWND)lParam)
pfp->PPFileMain_OnChkHidden(hDlg);
else if (GetDlgItem(hDlg, IDC_CHK_ARCHIVE)==(HWND)lParam)
pfp->PPFileMain_OnChkArchive(hDlg);
}
else if (HIWORD(wParam)==EN_CHANGE)
{
if (GetDlgItem(hDlg, IDC_EDIT_FILENAME)==(HWND)lParam)
{
GetWindowText(GetDlgItem(hDlg, IDC_EDIT_FILENAME), pfp->m_szNewName, MAX_PATH);
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;
}
////////////////////////////////////////////////////////////////
void CFileProperty::GetFileSizeAndCount(LPCTSTR szPath, DWORD* lpSize, DWORD* lpFileCount)
{
HANDLE hFile = CreateFile(szPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
DWORD dwSize = GetFileSize(hFile, NULL);
if (dwSize != 0xFFFFFFFF)
*lpSize += dwSize;
*lpFileCount += 1;
CloseHandle(hFile);
}
////////////////////////////////////////////////////////////////
void CFileProperty::GetFolderSizeAndCount(LPCTSTR szPath, DWORD* lpSize, DWORD* lpFileCount, DWORD* lpFolderCount)
{
TCHAR szTemp[MAX_PATH];
wsprintf(szTemp, _T("%s\\*.*"), szPath);
WIN32_FIND_DATA finddata;
HANDLE hFind = FindFirstFile(szTemp, &finddata);
if (hFind != INVALID_HANDLE_VALUE)
{
BOOL bRet = TRUE;
do
{
TCHAR szChildPath[MAX_PATH];
wsprintf(szChildPath, _T("%s\\%s"), szPath, finddata.cFileName);
if (finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
//僼僅儖僟
GetFolderSizeAndCount(szChildPath, lpSize, lpFileCount, lpFolderCount);
else
//僼傽僀儖
GetFileSizeAndCount(szChildPath, lpSize, lpFileCount);
}
while (FindNextFile(hFind, &finddata));
FindClose(hFind);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -