📄 textexdlg.cpp
字号:
// TextExDlg.cpp : implementation file
//
#include "stdafx.h"
#include "resourceeditor.h"
#include "TextExDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTextExDlg dialog
CTextExDlg::CTextExDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTextExDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTextExDlg)
m_strID = _T("");
m_strLangValue = _T("");
m_strLangType = _T("");
//}}AFX_DATA_INIT
m_bCanModifyID = TRUE;
m_bSel = FALSE;
m_nIndex = 0;
m_nPosition = ADD_ITEM_AT_TAIL;
}
void CTextExDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_CMB_LANG_TYPE, m_cbxLangType);
DDX_Text(pDX, IDC_EDT_ID, m_strID);
DDV_MaxChars(pDX, m_strID, 128);
DDX_Text(pDX, IDC_EDT_LANG_VALUE, m_strLangValue);
DDV_MaxChars(pDX, m_strLangValue, MAX_TEXT_LEN);
DDX_CBString(pDX, IDC_CMB_LANG_TYPE, m_strLangType);
DDX_Radio(pDX, IDC_RDO_HEAD, m_nPosition);
//}}AFX_DATA_MAP
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTextExDlg, CDialog)
ON_CBN_SELCHANGE(IDC_CMB_LANG_TYPE, OnSelchangeCmbLangType)
ON_CBN_SETFOCUS(IDC_CMB_LANG_TYPE, OnSetfocusCmbLangType)
ON_BN_CLICKED(IDC_RDO_HEAD, OnRdoHead)
ON_BN_CLICKED(IDC_RDO_BEFORE, OnRdoBefore)
ON_BN_CLICKED(IDC_RDO_AFTER, OnRdoAfter)
ON_BN_CLICKED(IDC_RDO_TAIL, OnRdoTail)
//}}AFX_MSG_MAP
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTextExDlg message handlers
BOOL CTextExDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
if( !m_bCanModifyID )
{
CWnd * pWnd = GetDlgItem(IDC_EDT_ID);
_ASSERTE( pWnd != NULL );
pWnd->EnableWindow(FALSE);
}
for(int i = 0;i<g_theApp.m_nUsedLangNum;i++)
{
m_cbxLangType.AddString(g_theApp.m_arrUsedLangNames.GetAt(i));
//m_strArrLangValues.Add(_T(""));
}
m_cbxLangType.SetCurSel(0);
if(!m_bSel)
{
CWnd * pWnd = GetDlgItem(IDC_RDO_HEAD);
_ASSERTE( pWnd != NULL );
pWnd->EnableWindow(FALSE);
pWnd = GetDlgItem(IDC_RDO_BEFORE);
_ASSERTE( pWnd != NULL );
pWnd->EnableWindow(FALSE);
pWnd = GetDlgItem(IDC_RDO_AFTER);
_ASSERTE( pWnd != NULL );
pWnd->EnableWindow(FALSE);
pWnd = GetDlgItem(IDC_RDO_TAIL);
_ASSERTE( pWnd != NULL );
pWnd->EnableWindow(FALSE);
}
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CTextExDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData();
m_strArrLangValues.SetAt(m_nIndex,m_strLangValue);
if( m_bCanModifyID )
{
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;
}
if( g_theApp.m_MMIRes.TextIDIsExist(m_strID) )
{
AfxMessageBox(_T("The ID already exist, please reinput!"));
return;
}
m_strID.MakeUpper();
}
CDialog::OnOK();
}
BOOL CTextExDlg::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')) && cInput != 8 /* backspace*/ )
{
if( !(GetKeyState(VK_LCONTROL) & 0x0100) )
return TRUE;
}
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CTextExDlg::OnSelchangeCmbLangType()
{
// TODO: Add your control notification handler code here
UpdateData();
m_strArrLangValues.SetAt(m_nIndex,m_strLangValue);
m_nIndex = m_cbxLangType.GetCurSel();
m_strLangValue = m_strArrLangValues.GetAt(m_nIndex);
UpdateData(FALSE);
}
void CTextExDlg::OnSetfocusCmbLangType()
{
// TODO: Add your control notification handler code here
}
void CTextExDlg::OnRdoHead()
{
m_nPosition = ADD_ITEM_AT_HEAD;
}
void CTextExDlg::OnRdoBefore()
{
m_nPosition = ADD_ITEM_BEFORE_CUR;
}
void CTextExDlg::OnRdoAfter()
{
m_nPosition = ADD_ITEM_AFTER_CUR;
}
void CTextExDlg::OnRdoTail()
{
m_nPosition = ADD_ITEM_AT_TAIL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -