📄 resourceeditor_helper.cpp
字号:
#include "stdafx.h"
#include "ResourceEditor.h"
#include "RenameDlg.h"
BOOL CResEditorApp::FileNameIsValid( LPCTSTR pszFileName )
{
_ASSERTE( pszFileName != NULL );
_TCHAR szFileName[ _MAX_PATH ];
_tcscpy(szFileName, pszFileName);
LPTSTR pName = _tcsrchr(szFileName, _T('\\'));
if( pName != NULL )
pName++;
else
pName = szFileName;
LPTSTR pExt = _tcsrchr(pName, _T('.'));
if( pExt != NULL )
*pExt = 0;
int nLen = _tcslen(pName);
for( int i = 0; i < nLen; ++i )
{
if( pName[i] < _T('0') || pName[i] > _T('9') )
{
if( pName[i] < _T('a') || pName[i] > _T('z') )
{
if( pName[i] != _T('_') && (pName[i] < _T('A') || pName[i] > _T('Z')) )
{
return FALSE;
}
}
}
}
return TRUE;
}
BOOL CResEditorApp::RenameFileName( LPCTSTR pOldName, CString &strNewName,MMI_RES_TYPE_E ResType /* = MMI_RT_IMAGE */ )
{
_ASSERTE( pOldName != NULL );
CRenameDlg dlg;
int nFind = strNewName.ReverseFind(_T('\\'));
_ASSERTE( nFind > 0 );
dlg.m_eResType = ResType;
dlg.m_strAdding = strNewName.Right(strNewName.GetLength()-nFind-1);
dlg.m_strPathName = strNewName.Left(nFind+1);
dlg.m_strAdded = pOldName;
if( dlg.DoModal() == IDOK )
{
strNewName = dlg.m_strNewFullName;
return TRUE;
}
return FALSE;
}
BOOL CResEditorApp::DoCheckAndRename( LPCTSTR pszFileName, CString &strID,
CString &strNewName, MMI_RES_TYPE_E ResType /* = MMI_RT_IMAGE */ )
{
_ASSERTE( pszFileName != NULL );
strNewName = pszFileName;
if( !FileNameIsValid(pszFileName) )
{
if( AfxMessageBox(_T("The file name contains illegal character, rename it?"), MB_YESNO) == IDNO )
return FALSE;
if( !RenameFileName( pszFileName, strNewName ) )
return FALSE;
}
strID = MakeResID(strNewName, ResType);
CString strMsg;
BOOL bExist = TRUE;
switch( ResType )
{
case MMI_RT_IMAGE:
bExist = m_MMIRes.ImgIsExist(strID);
strMsg.Format(_T("The file already exist, would like to rename it?"));
break;
case MMI_RT_ANIM:
bExist = m_MMIRes.AnimIsExist(strID);
strMsg.Format(_T("The directory already exist, would like to rename it?"));
break;
case MMI_RT_RING:
bExist = m_MMIRes.RingIsExist(strID);
strMsg.Format(_T("The file already exist, would like to rename it?"));
break;
default:
_ASSERTE( 0 );
}
if( bExist )
{
if( AfxMessageBox(strMsg, MB_YESNO) == IDNO )
return FALSE;
CString strExist = m_MMIRes.GetFileName(strID);
if( RenameFileName( strExist, strNewName,ResType ) )
strID = MakeResID(strNewName, ResType);
else
return FALSE;
}
return TRUE;
}
CString CResEditorApp::MakeResID(LPCTSTR pszName, MMI_RES_TYPE_E ResType)
{
CString strID;
switch( ResType )
{
case MMI_RT_IMAGE:
strID = m_MMIRes.MakeImgID(pszName);
break;
case MMI_RT_ANIM:
strID = m_MMIRes.MakeAnimID(pszName);
break;
case MMI_RT_RING:
strID = m_MMIRes.MakeRingID(pszName);
break;
default:
_ASSERTE( 0 );
}
return strID;
}
void CResEditorApp::ReadIniFile(void)
{
if( !m_bSuperUser )
return;
_TCHAR szIniFile[ _MAX_PATH ];
::GetModuleFileName(NULL, szIniFile, _MAX_PATH);
LPTSTR pExt = _tcsrchr(szIniFile, _T('.'));
_ASSERTE( pExt != NULL );
_tcscpy(pExt, _T(".ini"));
_TCHAR szFileName[ _MAX_PATH ];
::GetPrivateProfileString(_T("Files"), _T("image"), NULL, szFileName, _MAX_PATH, szIniFile);
m_strImgFile = szFileName;
::GetPrivateProfileString(_T("Files"), _T("anim"), NULL, szFileName, _MAX_PATH, szIniFile);
m_strAnimFile = szFileName;
::GetPrivateProfileString(_T("Files"), _T("ring"), NULL, szFileName, _MAX_PATH, szIniFile);
m_strRingFile = szFileName;
::GetPrivateProfileString(_T("Files"), _T("text"), NULL, szFileName, _MAX_PATH, szIniFile);
m_strTextFile = szFileName;
::GetPrivateProfileString(_T("Files"), _T("font"), NULL, szFileName, _MAX_PATH, szIniFile);
m_strFontFile = szFileName;
}
void CResEditorApp::WriteInitFile(void)
{
if( !m_bSuperUser )
return;
_TCHAR szIniFile[ _MAX_PATH ];
::GetModuleFileName(NULL, szIniFile, _MAX_PATH);
LPTSTR pExt = _tcsrchr(szIniFile, _T('.'));
_ASSERTE( pExt != NULL );
_tcscpy(pExt, _T(".ini"));
::WritePrivateProfileString(_T("Files"), _T("image"), m_strImgFile, szIniFile);
::WritePrivateProfileString(_T("Files"), _T("anim"), m_strAnimFile, szIniFile);
::WritePrivateProfileString(_T("Files"), _T("ring"), m_strRingFile, szIniFile);
::WritePrivateProfileString(_T("Files"), _T("text"), m_strTextFile, szIniFile);
::WritePrivateProfileString(_T("Files"), _T("font"), m_strFontFile, szIniFile);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -