📄 fileproperty.cpp
字号:
*lpFolderCount += 1;
}
////////////////////////////////////////////////////////////////
void CFileProperty::PPFileMulti_InitDialog(HWND hDlg)
{
HCURSOR hCursor =SetCursor(LoadCursor(NULL, IDC_WAIT));
#ifdef __POCKET_PC
SetDlgItemText(hDlg, IDC_TITLE, m_szTitle);
#endif
DWORD dwSize = 0;
DWORD dwFileCount = 0;
DWORD dwFolderCount = 0;
for (int i=0; i<m_nCount; i++)
{
TCHAR szPath[MAX_PATH];
//僷僗偺嶌惉
//ADD START TODA (儖乕僩帪偺僷僗愝掕 - advice by Y.Nagamidori)
if(0 == wcsicmp(m_lpliinfo[i].szName, GetRootName()))
szPath[0] = 0x00;
else
//ADD END
wsprintf(szPath, _T("%s\\%s"), m_lpszCurrentFolder, m_lpliinfo[i].szName);
//僒僀僘庢摼丄僇僂儞僩奐巒
if (m_lpliinfo[i].nItem == LIST_ITEM_FOLDER)
GetFolderSizeAndCount(szPath, &dwSize, &dwFileCount, &dwFolderCount);
else if (m_lpliinfo[i].nItem == LIST_ITEM_FILE)
GetFileSizeAndCount(szPath, &dwSize, &dwFileCount);
}
//昞帵
if (!wcslen(m_lpszCurrentFolder))
SetWindowText(GetDlgItem(hDlg, IDC_FILE_PATH), GetRootName());
else
SetWindowText(GetDlgItem(hDlg, IDC_FILE_PATH), m_lpszCurrentFolder);
if (m_nCount == 1 && m_lpliinfo[0].nItem == LIST_ITEM_FOLDER)
dwFolderCount -= 1;
TCHAR szTemp[128];
wsprintf(szTemp, IDS_FMT_FOLDERCOUNT, dwFolderCount);
SetWindowText(GetDlgItem(hDlg, IDC_FOLDER_COUNT), szTemp);
wsprintf(szTemp, IDS_FMT_FILECOUNT, dwFileCount);
SetWindowText(GetDlgItem(hDlg, IDC_FILE_COUNT), szTemp);
TCHAR szSize[64];
wsprintf(szSize, _T("%d"), dwSize);
SetFormatInteger(szSize, 64);
wsprintf(szTemp, IDS_FMT_BYTE, szSize);
SetWindowText(GetDlgItem(hDlg, IDC_SIZE_BYTE), szTemp);
SetFormatSize(dwSize, szSize, _T("%s KB"), _T("%s MB"));
SetWindowText(GetDlgItem(hDlg, IDC_SIZE_KIROBYTE), szSize);
SetCursor(hCursor);
}
////////////////////////////////////////////////////////////////
LRESULT CALLBACK PPFileMultiProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
pfp->PPFileMulti_InitDialog(hDlg);
return TRUE;
}
#ifdef __POCKET_PC
case WM_PAINT:
return DefDlgPaintProc(hDlg, wParam, lParam);
case WM_CTLCOLORSTATIC:
return DefDlgCtlColorStaticProc(hDlg, wParam, lParam);
#endif
}
return FALSE;
}
////////////////////////////////////////////////////////////////
int CFileProperty::ShowMultiProperty()
{
//暋悢僼傽僀儖偺僾儘僷僥傿
PROPSHEETPAGE psp;
psp.dwSize = sizeof(PROPSHEETPAGE);
psp.dwFlags = PSP_USETITLE;
psp.pszTemplate = MAKEINTRESOURCE(IDD_PP_FILE_MULTI);
psp.pszTitle = IDS_PROP_STANDARD;
psp.pfnDlgProc = (DLGPROC)PPFileMultiProc;
psp.hInstance = g_hInst;
psp.pszIcon = NULL;
PROPSHEETHEADER psh;
psh.dwSize = sizeof(PROPSHEETHEADER);
#ifdef __POCKET_PC
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_MAXIMIZE | PSH_USECALLBACK;
psh.pfnCallback = PropSheetCallback;
#else
psh.dwFlags = PSH_PROPSHEETPAGE;
#endif
psh.nPages = 1;
psh.nStartPage = 0;
psh.pszIcon = NULL;
psh.pszCaption= IDS_PROP_OBJECTS;
psh.hwndParent = g_MainWnd.m_hWnd;
psh.hInstance = g_hInst;
psh.ppsp = &psp;
#ifdef __POCKET_PC
wcscpy(m_szTitle, IDS_PROP_OBJECTS);
#endif
return PropertySheet(&psh);
}
////////////////////////////////////////////////////////////////
int CFileProperty::ShowFolderProperty()
{
PROPSHEETPAGE psp[2];
psp[0].dwSize = sizeof(PROPSHEETPAGE);
psp[0].dwFlags = PSP_USETITLE;
psp[0].pszTemplate = MAKEINTRESOURCE(IDD_PP_FILE_MAIN);
psp[0].pszTitle = IDS_PROP_STANDARD;
psp[0].pfnDlgProc = (DLGPROC)PPFileMainProc;
psp[0].hInstance = g_hInst;
psp[0].pszIcon = NULL;
psp[1].dwSize = sizeof(PROPSHEETPAGE);
psp[1].dwFlags = PSP_USETITLE;
psp[1].pszTemplate = MAKEINTRESOURCE(IDD_PP_FILE_MULTI);
psp[1].pszTitle = IDS_PROP_CONTENTS;
psp[1].pfnDlgProc = (DLGPROC)PPFileMultiProc;
psp[1].hInstance = g_hInst;
psp[1].pszIcon = NULL;
PROPSHEETHEADER psh;
TCHAR szTemp[MAX_PATH];
wsprintf(szTemp, IDS_FMT_PROP_OBJECT, m_lpliinfo[0].szName);
psh.dwSize = sizeof(PROPSHEETHEADER);
#ifdef __POCKET_PC
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_MAXIMIZE | PSH_USECALLBACK;
psh.pfnCallback = PropSheetCallback;
#else
psh.dwFlags = PSH_PROPSHEETPAGE;
#endif
psh.nPages = 2;
psh.nStartPage = 0;
psh.pszIcon = NULL;
psh.pszCaption = szTemp;
psh.hwndParent = g_MainWnd.m_hWnd;
psh.hInstance = g_hInst;
psh.ppsp = psp;
#ifdef __POCKET_PC
wcscpy(m_szTitle, szTemp);
#endif
return PropertySheet(&psh);
}
////////////////////////////////////////////////////////////////
int CFileProperty::ShowLinkProperty()
{
wcscpy(m_szOldTarget, _T(""));
wcscpy(m_szNewTarget, _T(""));
PROPSHEETPAGE psp[2];
psp[0].dwSize = sizeof(PROPSHEETPAGE);
psp[0].dwFlags = PSP_USETITLE;
psp[0].pszTemplate = MAKEINTRESOURCE(IDD_PP_FILE_MAIN);
psp[0].pszTitle = IDS_PROP_STANDARD;
psp[0].pfnDlgProc = (DLGPROC)PPFileMainProc;
psp[0].hInstance = g_hInst;
psp[0].pszIcon = NULL;
psp[1].dwSize = sizeof(PROPSHEETPAGE);
psp[1].dwFlags = PSP_USETITLE;
psp[1].pszTemplate = MAKEINTRESOURCE(IDD_PP_FILE_SHORTCUT);
psp[1].pszTitle = IDS_PROP_SHORTCUT;
psp[1].pfnDlgProc = (DLGPROC)PPFileShortcutProc;
psp[1].hInstance = g_hInst;
psp[1].pszIcon = NULL;
PROPSHEETHEADER psh;
TCHAR szTemp[MAX_PATH];
wsprintf(szTemp, IDS_FMT_PROP_OBJECT, m_lpliinfo[0].szName);
psh.dwSize = sizeof(PROPSHEETHEADER);
#ifdef __POCKET_PC
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_MAXIMIZE | PSH_USECALLBACK;
psh.pfnCallback = PropSheetCallback;
#else
psh.dwFlags = PSH_PROPSHEETPAGE;
#endif
psh.nPages = 2;
psh.nStartPage = 0;
psh.pszIcon = NULL;
psh.pszCaption = szTemp;
psh.hwndParent = g_MainWnd.m_hWnd;
psh.hInstance = g_hInst;
psh.ppsp = psp;
#ifdef __POCKET_PC
wcscpy(m_szTitle, szTemp);
#endif
return PropertySheet(&psh);
}
////////////////////////////////////////////////////////////////
int CFileProperty::ShowSingleProperty()
{
PROPSHEETPAGE psp;
psp.dwSize = sizeof(PROPSHEETPAGE);
psp.dwFlags = PSP_USETITLE;
psp.pszTemplate = MAKEINTRESOURCE(IDD_PP_FILE_MAIN);
psp.pszTitle = IDS_PROP_STANDARD;
psp.pfnDlgProc = (DLGPROC)PPFileMainProc;
psp.hInstance = g_hInst;
psp.pszIcon = NULL;
PROPSHEETHEADER psh;
TCHAR szTemp[MAX_PATH];
wsprintf(szTemp, IDS_FMT_PROP_OBJECT, m_lpliinfo[0].szName);
psh.dwSize = sizeof(PROPSHEETHEADER);
#ifdef __POCKET_PC
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_MAXIMIZE | PSH_USECALLBACK;
psh.pfnCallback = PropSheetCallback;
#else
psh.dwFlags = PSH_PROPSHEETPAGE;
#endif
psh.nPages = 1;
psh.nStartPage = 0;
psh.pszIcon = NULL;
psh.pszCaption = szTemp;
psh.hwndParent = g_MainWnd.m_hWnd;
psh.hInstance = g_hInst;
psh.ppsp = &psp;
#ifdef __POCKET_PC
wcscpy(m_szTitle, szTemp);
#endif
return PropertySheet(&psh);
}
////////////////////////////////////////////////////////////////
int CFileProperty::ShowFileProperty(LPCTSTR lpszCurrentFolder, LISTITEMINFO* pliinfo, int nCount)
{
pfp = this;
int nRet;
m_lpszCurrentFolder = lpszCurrentFolder;
m_lpliinfo = pliinfo;
m_nCount = nCount;
if (nCount > 1)
nRet = ShowMultiProperty();
else
{
BOOL bLink = FALSE;
//僼僅儖僟偺応崌
if (pliinfo[0].nItem == LIST_ITEM_FOLDER)
nRet = ShowFolderProperty();
else if (pliinfo[0].nItem == LIST_ITEM_FILE)
{
//儕儞僋偺応崌
TCHAR szTemp[MAX_PATH];
wcscpy(szTemp, m_lpliinfo[0].szName);
LPTSTR lpszExt = wcsrchr(szTemp, _T('.'));
if (lpszExt != NULL)
{
// wcsupr(lpszExt); //DEL TODA
if (wcsicmp(lpszExt, _T(".LNK"))==0) //MOD TODA (wcscmp -> wcsicmp)
{
bLink = TRUE;
nRet = ShowLinkProperty();
}
else
nRet = ShowSingleProperty();
}
else
nRet = ShowSingleProperty();
}
if (nRet==IDOK)
{
BOOL bRename = TRUE;
if (!wcslen(m_szNewName))
{
MessageBox(g_MainWnd.m_hWnd, IDS_MSG_NONAME, NULL, MB_OK | MB_ICONSTOP);
bRename = FALSE;
}
if (g_MainWnd.m_ListView.m_Settings.bNotShowExt && m_lpliinfo[0].nItem == LIST_ITEM_FILE)
SetExtFromFileName(m_szNewName, m_lpliinfo[0].szName);
BOOL bRefresh = FALSE;
TCHAR szOldPath[MAX_PATH];
TCHAR szNewPath[MAX_PATH];
TCHAR szTempPath[MAX_PATH];
wsprintf(szOldPath, _T("%s\\%s"), m_lpszCurrentFolder, m_lpliinfo[0].szName);
wsprintf(szNewPath, _T("%s\\%s"), m_lpszCurrentFolder, m_szNewName);
wcscpy(szTempPath, _T("\\Temp\\Temp.lnk"));
//儕儞僋傪嶌傝捈偟
if (wcscmp(m_szOldTarget, m_szNewTarget) != 0 && bLink)
{
if (wcslen(m_szNewTarget))
{
//僔儑乕僩僇僢僩傪嶌傝捈偟
DWORD dwAttr = GetFileAttributes(szOldPath);
SetFileAttributes(szOldPath, FILE_ATTRIBUTE_NORMAL);
if (DeleteFile(szOldPath))
{
bRefresh = TRUE;
SHCreateShortcut(szOldPath, m_szNewTarget);
g_MainWnd.m_ListView.m_FileImageListLarge.RefreshIcon(szOldPath);
g_MainWnd.m_ListView.m_FileImageListSmall.RefreshIcon(szOldPath);
}
else
MessageBox(g_MainWnd.m_hWnd, IDS_MSG_CANNOTCHANGELINK, NULL, MB_OK | MB_ICONSTOP);
SetFileAttributes(szOldPath, dwAttr);
}
else
MessageBox(g_MainWnd.m_hWnd, IDS_MSG_NOLINKTARGET, NULL, MB_OK | MB_ICONSTOP);
}
//懏惈傪曄峏
if (m_dwOrgAttr != m_dwAttr)
{
if (SetFileAttributes(szOldPath, m_dwAttr))
bRefresh = TRUE;
else
MessageBox(g_MainWnd.m_hWnd, IDS_MSG_CANNOTCHANGEATTR, NULL, MB_OK|MB_ICONSTOP);
}
if (wcscmp(m_szNewName, m_lpliinfo[0].szName)!=0 && bRename)
{
//柤慜偺曄峏
if (MoveFile(szOldPath, szNewPath))
bRefresh = TRUE;
else
MessageBox(g_MainWnd.m_hWnd, IDS_MSG_CANNOTCHANGENAME, NULL, MB_OK|MB_ICONSTOP);
}
pfp = NULL;
return bRefresh;
}
}
pfp = NULL;
return 0;
}
////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -