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