导航
  • 主页
  • VC/MVC基础类
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC/MFC&Web
  • Doc/View

如何处理EDIT Control控件,对应的变量为m_groupid int类型,输入为非法字符时如何判断

wukonggaoxing 程序员  2014-02-16 08:06:13
现在有一个EDIT Control控件ID_EDIT_GROUPID,设其对应的变量为m_groupid int类型,有一个提交按钮,用于处理用户输入在该EDIT Control控件的内容的函数,现在我想在该函数中加一个验证处理。当用户输入的不是数字,而是非法字符,我该怎么来判断?我知道有一个解决方法是把m_groupid 设置成CString类型,这样就可以判断用户输入的内容是数字,是字符,还是字符与数字的混合,然后进行相应的处理。可是现在我不想改变m_groupid的数据类型,请问有其他的解决办法吗?我用调试的结果是如果用户输入的非法字符(非int类型),那么m_groupid就没接收,还是0(初始化时系统自动赋值)。
...全文
90 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wukonggaoxing 2014-02-18
引用 3 楼 CharlesSimonyi 的回复:
如果你要在点提交按钮时才验证文本框中的内容的话: 方法1:你的文本框右键-添加成员变量,你已经添加了控件变量m_groupid,同时还可以添加Value变量CString类型。UpdateData后检查CString变量的值即可。 方法2:m_groupid.GetWindowText取文本框中的内容,进行检查。 如果你要让文本框自己禁止不符合要求的数据输入,比如只允许输入英文字符,数字、标点禁止输入。 可以写一个类派生于CEdit,处理WM_CHAR消息,拦截不符合要求的输入。然后拖一个文本框控件上去,关联与你新写的这个类。或是直接在主窗口的CWnd::PreTranslateMessage里处理文本框上的WM_CHAR消息,拦截不符合要求的输入。
用了第一种方法解决了,第二种方法有点困惑,呵呵
回复
encoderlee 2014-02-17
如果你要在点提交按钮时才验证文本框中的内容的话: 方法1:你的文本框右键-添加成员变量,你已经添加了控件变量m_groupid,同时还可以添加Value变量CString类型。UpdateData后检查CString变量的值即可。 方法2:m_groupid.GetWindowText取文本框中的内容,进行检查。 如果你要让文本框自己禁止不符合要求的数据输入,比如只允许输入英文字符,数字、标点禁止输入。 可以写一个类派生于CEdit,处理WM_CHAR消息,拦截不符合要求的输入。然后拖一个文本框控件上去,关联与你新写的这个类。或是直接在主窗口的CWnd::PreTranslateMessage里处理文本框上的WM_CHAR消息,拦截不符合要求的输入。
回复
信阳毛尖 2014-02-17
引用 4 楼 schlafenhamster 的回复:
“当用户输入(一个字符,所以要检查每一个 即 WM_CHAR)的不是数字,而是非法字符”
你可以从CEdit派生一个类,专门用于输入数字的,方法是在WM_CHAR消息中判断输入的字符的ASC码值是否在0——9之间即可
回复
schlafenhamster 2014-02-17
“当用户输入(一个字符,所以要检查每一个 即 WM_CHAR)的不是数字,而是非法字符”
回复
wukonggaoxing 2014-02-16
引用 1 楼 happyparrot 的回复:
控件属性界面中有个选项是 Number,选择后就只能输入数字了
可是我也可以在里面输入诸如“sdfsoi”之类的内容啊,只是好像控件变量不接收
回复
快乐鹦鹉 2014-02-16
控件属性界面中有个选项是 Number,选择后就只能输入数字了
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告