VC++ CEdit控件如何限制只允许输入汉字和数字?请详细指出变量类型和所用方法,谢谢了!

2024-12-08 18:31:42
推荐回答(1个)
回答1:

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;
}