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

📄 fontexdlg.cpp

📁 Resource editor base speadrum Chinese mobile
💻 CPP
字号:
// FontExDlg.cpp : implementation file
//

#include "stdafx.h"
#include "resourceeditor.h"
#include "FontExDlg.h"
#include "FileDlg.h"
#include "MMIRes.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFontExDlg dialog

const _TCHAR CFontExDlg::SZ_EXT[]    = _T(".lib");
const _TCHAR CFontExDlg::SZ_FILTER[] = _T("Font lib (*.lib)|*.lib|All Files (*.*)|*.*||");

CFontExDlg::CFontExDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CFontExDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFontExDlg)
	m_strID = _T("");
	m_strType = _T("");
	m_strDB = _T("");
	//}}AFX_DATA_INIT
	m_nType		= 0;
	m_bEdit		= FALSE;
	m_nIndex    = 0;
}


void CFontExDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFontExDlg)
	DDX_Control(pDX, IDC_CMB_LANG, m_cmbLang);
	DDX_Text(pDX, IDC_EDT_ID, m_strID);
	DDX_Text(pDX, IDC_EDT_TYPE, m_strType);
	DDX_Text(pDX, IDC_EDT_DB, m_strDB);
	//}}AFX_DATA_MAP
	DDV_MaxChars(pDX,m_strType,128);
}


BEGIN_MESSAGE_MAP(CFontExDlg, CDialog)
	//{{AFX_MSG_MAP(CFontExDlg)
	ON_EN_CHANGE(IDC_EDT_TYPE, OnChangeEdtType)
	ON_CBN_SELCHANGE(IDC_CMB_LANG, OnSelchangeCmbLang)
	ON_BN_CLICKED(IDC_BTN_DB, OnBtnDb)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFontExDlg message handlers

//DEL void CFontExDlg::OnBtnOther() 
//DEL {
//DEL 	// TODO: Add your control notification handler code here
//DEL 	CFileDlg dlg;
//DEL     dlg.SetFileExt(SZ_EXT);
//DEL     dlg.SetFileFilter(SZ_FILTER);
//DEL 
//DEL     m_strOther = dlg.GetPathName();
//DEL 
//DEL     UpdateData(FALSE);	
//DEL }

//DEL void CFontExDlg::OnBtnAscii() 
//DEL {
//DEL 	// TODO: Add your control notification handler code here
//DEL 	CFileDlg dlg;
//DEL     dlg.SetFileExt(SZ_EXT);
//DEL     dlg.SetFileFilter(SZ_FILTER);
//DEL 
//DEL     m_strAscii = dlg.GetPathName();
//DEL 
//DEL     UpdateData(FALSE);	
//DEL }

BOOL CFontExDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	CWnd * pWnd = GetDlgItem(IDC_EDT_ID);
    _ASSERTE( pWnd != NULL );

    CWnd * pFocus = GetFocus();
    if( pMsg->message == WM_CHAR && pFocus != NULL && pFocus->m_hWnd == pWnd->m_hWnd )
    {
        _TCHAR cInput = pMsg->wParam;
        if( cInput < _T('0') || cInput > _T('9') )
        {
            if( cInput < _T('a') || cInput > _T('z') )
            {
                if( cInput != _T('_') && (cInput < _T('A') || cInput > _T('Z')) )
                {
                    if( !(GetKeyState(VK_LCONTROL) & 0x0100) )
                        return TRUE;
                }
            }
            else
            {
                pMsg->wParam -= 32;
            }
        }
    }	
	return CDialog::PreTranslateMessage(pMsg);
}

BOOL CFontExDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
    if( !g_theApp.IsSuperUser() || m_bEdit )
    {
        CWnd * pWnd = GetDlgItem(IDC_EDT_ID);
        _ASSERTE( pWnd != NULL );
        pWnd->EnableWindow(FALSE);

        pWnd = GetDlgItem(IDC_EDT_TYPE);
        _ASSERTE( pWnd != NULL );
        pWnd->EnableWindow(FALSE);
    }
	for(int i = 0;i<g_theApp.m_nUsedLangNum;i++)
	{
		m_cmbLang.AddString(g_theApp.m_arrUsedLangNames.GetAt(i));
		if(!m_bEdit)
			m_strArrDB.Add(_T(""));
	}
    m_cmbLang.SetCurSel(0);
	m_strDB = m_strArrDB.GetAt(0);
	UpdateData(FALSE);



	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CFontExDlg::OnOK() 
{
	// TODO: Add extra validation here
/*	UpdateData();
	CStringArray &arrType = g_theApp.m_strArrFontType;
	int nCount = arrType.GetSize();
	int i=0;
    for(i =0; i< nCount;i++)
	{
		if(arrType.GetAt(i).Compare(m_strID)==0)
			break;
	}
	m_nType = i;

    if( g_theApp.IsSuperUser() && !m_bEdit )
    {
        if( m_strID.IsEmpty() )
        {
            AfxMessageBox(_T("The ID isn't empty!"));
            return;
        }

        if( m_strID[0] >= _T('0') && m_strID[0] <= _T('9') )
        {
            AfxMessageBox(_T("The ID's first character can't be a number!"));
            return;
        }

        CMMIRes &mmires = g_theApp.m_MMIRes;
        if( mmires.FontIsExist(m_strID) )
        {
            AfxMessageBox(_T("This ID already exist!"));
            return;
        }
    }
	if( m_strAscii.IsEmpty())
    {
		AfxMessageBox(_T("'Ascii font db can't be empty!"));
		return;
    }
	m_strID.MakeUpper();
	m_strType.MakeUpper();
	UpdateData(FALSE);
	if(i>=nCount)
	{
		arrType.Add(m_strID);
	}
*/
	UpdateData();
	CStringArray &arrType = g_theApp.m_strArrFontType;
	int nCount = arrType.GetSize();
	int i=0;
    for(i =0; i< nCount;i++)
	{
		if(arrType.GetAt(i).Compare(m_strID)==0)
			break;
	}
	m_nType = i;

    if( g_theApp.IsSuperUser() && !m_bEdit )
    {
        if( m_strID.IsEmpty() )
        {
            AfxMessageBox(_T("The ID isn't empty!"));
            return;
        }

        if( m_strID[0] >= _T('0') && m_strID[0] <= _T('9') )
        {
            AfxMessageBox(_T("The ID's first character can't be a number!"));
            return;
        }

        CMMIRes &mmires = g_theApp.m_MMIRes;
        if( mmires.FontIsExist(m_strID) )
        {
            AfxMessageBox(_T("This ID already exist!"));
            return;
        }
    }
	if( m_strArrDB.GetAt(0).IsEmpty())
    {
		CString strWarning;
		strWarning.Format(_T("%s font db can't be empty!"),
			g_theApp.m_arrUsedLangNames.GetAt(0));
		AfxMessageBox(strWarning);
		return;
    }
	m_strID.MakeUpper();
	m_strType.MakeUpper();
	UpdateData(FALSE);
	if(i>=nCount)
	{
		arrType.Add(m_strID);
	}
	for(int j= 0; j< m_strArrDB.GetSize();j++)
	{
		if(m_strArrDB.GetAt(j).Find('\\') ==  -1)
			m_strArrDB.SetAt(j,_T(""));

	}
	CDialog::OnOK();

}

void CFontExDlg::OnChangeEdtType() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	UpdateData();
	m_strID = m_strType;

	UpdateData(FALSE);
}

void CFontExDlg::OnSelchangeCmbLang() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	m_strArrDB.SetAt(m_nIndex,m_strDB);
	m_nIndex = m_cmbLang.GetCurSel();
	m_strDB = m_strArrDB.GetAt(m_nIndex);

	UpdateData(FALSE);	
}

BOOL CFontExDlg::TestChanged()
{
	if(!m_bEdit)
		m_bChanged = TRUE;
	else
	{
		_ASSERTE(m_strArrDB.GetSize() == m_strArrOldDB.GetSize());
		int nSize = m_strArrDB.GetSize();
		for(int i = 0;i < nSize; i++)
		{
			if(m_strArrDB.GetAt(i).Compare(m_strArrOldDB.GetAt(i))!=0)
			{
				m_bChanged = TRUE;
				break;
			}
		}
		if(i>=nSize)
			m_bChanged = FALSE;
	}

	return m_bChanged;
}

void CFontExDlg::OnBtnDb() 
{
	// TODO: Add your control notification handler code here
	CFileDlg dlg;
    dlg.SetFileExt(SZ_EXT);
    dlg.SetFileFilter(SZ_FILTER);

	//@Hongliang Xin 2006-8-14 CR54277
    CString strFile;
	strFile = dlg.GetPathName();
	if(strFile.IsEmpty())
		return;
    m_strDB = strFile;
    
    m_strArrDB.SetAt(m_nIndex,m_strDB);

    UpdateData(FALSE);		
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -