MFC笔记一:MFC EditControl实现输入过滤

       MFC在使用EditControl控件作为字符输入时,如输入windows文件名等情况,为EditControl控件添加相应的过滤规则以应对不同的使用场景。

常见情况:1、Windows非法字符过滤;

                    2、仅输入数字(正数、正负数)等情况;

                    3、自定义过滤字符或字符串。


解决思路:

                 1、为EditControl控件添加变量CString型或Control型均可,EditControl实现过滤本质为对输入字符串的判断,当包含非法字符时自动删除非法字符;

                 2、为EditControl控件添加EN_CHANGE消息,当EditControl输入字符发生变化时即触发该消息。

                 3、重载该消息,添加过滤规则。


示例:

            1、为控件添加Value--CString型变量m_editInfo;




             2、为EditControl天剑EN_CHANGE消息


            3、添加过滤规则,以windows文件名非法字符过滤为例

UpdateData(TRUE);
if (m_editInfo.Find('/')>=0 || m_editInfo.Find('\\')>=0 || m_editInfo.Find('|')>=0 ||
    m_editInfo.Find(':')>=0 || m_editInfo.Find('\?')>=0 || m_editInfo.Find('\"')>=0 ||
    m_editInfo.Find('*')>=0 || m_editInfo.Find('<')>=0 || m_editInfo.Find('<')>=0)
		{
			int  tem_nEditSize = m_editInfo.GetLength();
			m_editInfo = m_editInfo.Left(tem_nEditSize-1);

			UpdateData(FALSE);
 			if (m_editInfo.GetLength()>0)
 			{
 				//设置Edit光标至末尾,否则光标会跳至段首
 				((CEdit*)GetDlgItem(IDC_EDIT_INPUT))->SetSel(m_editInfo.GetLength(), m_editInfo.GetLength());
 			}
		}



备注:1、实现数字输入时可通过CString->int/float等进行转换;

             2、简单的数字范围滤除可添加Edit——Value——int型变量,设置输入范围;

             3、更多过滤示例,解决思路可参考Demo

http://download.csdn.net/download/kui1989tkol/10198214






  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值