CEDIT控件只允许输入中文、字母、数字
1.鼠标右键项目
2. 添加类,类名为InPutEdit,继承CEdit
3.重写onChar方法
主要代码:
BOOL IsChineseCharANSI(BYTE inputChar)
{
BOOL bResult = FALSE;
// 依据为国标GB2312-1980的汉字编码方式,常用字编码
if (inputChar >= 0xB0 && inputChar <= 0xF7)
bResult = TRUE;
else if (inputChar >= 0xA1 && inputChar <= 0xFE)
bResult = TRUE;
return bResult;
}
void InputEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(0x0d==nChar) //回车
CEdit::OnChar(nChar, nRepCnt, nFlags);
// 允许BackSpace删除操作
if (nChar == 8)
CEdit::OnChar(nChar, nRepCnt, nFlags);
if(nChar <= '9' && nChar >= '0')//数字
CEdit::OnChar(nChar, nRepCnt, nFlags);
else if (nChar <= 'Z' && nChar >= 'A')//大写字母
CEdit::OnChar(nChar, nRepCnt, nFlags);
else if (nChar <= 'z' && nChar >= 'a')//小写字母
CEdit::OnChar(nChar, nRepCnt, nFlags);
else if (IsChineseCharANSI(nChar))// OnChar响应汉字输入的方式:划分为高、低字节组合,依次响应
CEdit::OnChar(nChar, nRepCnt, nFlags);
return;
}