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

VC++CEdit控件如何限制只允许输入汉字和数字?请详细指出变量类型和所用方法,谢谢了!... VC++ CEdit控件如何限制只允许输入汉字和数字?请详细指出变量类型和所用方法,谢谢了! 展开
 我来答
qianlima786
推荐于2016-01-19 · TA获得超过177个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:136万
展开全部

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;
}
更多追问追答
追问

谢谢你,已加载类和方法,新手想具体问下你是说将控件的类型改为CMyEdit,是说的类名吗?还是添加CMyEdit类型的控制变量呢?(这里显然没有修改类名,开始不懂)

应该是添加CMyEdit类型的控制变量。然后,用CMyEdit下的Control类型的变量就行哈,怎么我的编辑框还是可以输入@#¥%呢?


追答
首先你自己写个继承于CEdit的类CMyEdit,实现OnChar方法(看你好像已经写了)。然后按照常规步骤添加控件变量到该控件的父类CSERCHSTS2Dlg中,类型为CEdit,最后在CSERCHSTS2Dlg.h中将该控件变量的类型修改为CMyEdit,当然别忘了包含CMyEdit.h头文件。MFC ClassWizard不能添加自定义的控件类型,必须手动修改。
当所有的工作做完后,你在CMyEdit类的OnChar方法弄个断点,如果在控件中输入字符时程序被中断说明你的工作正确完成了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式