📄 fontexdlg.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 + -