CEdit类是从CWnd类继承的,在CWnd类里面,有一个方法OnChar(),当用户输入字符时该方法会被调用,你可以重写这个方法,判断字符自否为你想要的类型,如果不是直接返回就行了,否则直接调用基类的OnChar方法就行了。
我写了一个MyEdit类继承于Edit,并重写了OnChar方法,你在代码中将控件的类型改为MyEdit即可完成数字和汉字的过滤,经测试可用,如有不懂可以追问。
void MyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(nChar <= '9' && nChar >= '0')//数字
CEdit::OnChar(nChar, nRepCnt, nFlags);
if(nChar >=0x4E00 && nChar <= 0x9FFF)//常用字
CEdit::OnChar(nChar, nRepCnt, nFlags);
if(nChar >=0x3400 && nChar <= 0x4dff)//少用字
CEdit::OnChar(nChar, nRepCnt, nFlags);
if(nChar >=0x20000 && nChar <= 0x2A6DF)//少用字,历史上使用
CEdit::OnChar(nChar, nRepCnt, nFlags);
return;
}