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

📄 resourceeditor_helper.cpp

📁 Resource editor base speadrum Chinese mobile
💻 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 + -