[MFC开发经验(5)] 添加控件输入校验[TZZ]
1、启动VS2017软件,创建一个名为“MFCDemo5”的MFC对话框程序项目;
2、在资源视图中,打开对话框资源编辑器,删除主对话框上的所有控件(注意:默认控件一般是不需要的);
![[MFC开发经验(5)] 添加控件输入校验[TZZ]](https://exp-picture.cdn.bcebos.com/8db0c6a72633488408694799ddee7b7f870e4523.jpg)
4、右键单击第一个编辑框,然后打开“类向导窗口”,为“IDC_EDIT1”控件添加一个私有的值变量_edit1。设置完毕后,点击“类向导窗口”中的“编辑代码按钮”查看代码;
![[MFC开发经验(5)] 添加控件输入校验[TZZ]](https://exp-picture.cdn.bcebos.com/f367139a310e17990ea0b60dc9406afec214a323.jpg)
![[MFC开发经验(5)] 添加控件输入校验[TZZ]](https://exp-picture.cdn.bcebos.com/d400248ca608a50f9f775c3910cec7f88b77ff23.jpg)
6、调试运行代码,在弹出的对话框中,向第一个编辑框中输入字符。当输入字符超过6个后,就会输不进去了。这正是DDV_MaxChars函数在发挥作用;
![[MFC开发经验(5)] 添加控件输入校验[TZZ]](https://exp-picture.cdn.bcebos.com/19587f20a7cd0c6ed6790e06fed7997bbaf4dd23.jpg)
8、返回到“类囿鹣分胰向导窗口”后,你会发现按这种方式添加的控件值变量,其控件ID竟然不是“自定义变量”。点击“编辑代码按钮”,打开“MFCDe罪焐芡拂mo5Dlg.cpp”文件,查看DoDataExchange函数,发现VS竟然帮我们写好了DDX_Text和DDV_MaxChars函数。也就是说,我之前给大家介绍的取消“控件变量复选框”选中的做法,其实添加的只是一个自定义变量(又知道多了一点点!!!);
![[MFC开发经验(5)] 添加控件输入校验[TZZ]](https://exp-picture.cdn.bcebos.com/3fe32442a07aa010f6b8e08dbfbb19efa35f3e20.jpg)
9、调试运行代码,在第一个和第二个编辑框中,输入“12345678”。结果,由于DDV的作用,这两个编辑框中输入“123456”就无法输入了。嗯,一切正常,关闭对话框返回资源编辑页;
![[MFC开发经验(5)] 添加控件输入校验[TZZ]](https://exp-picture.cdn.bcebos.com/023cff37c97622bc1d4ec3d2a05fd54604962820.jpg)
11、返回到“类向导”窗口后,点击“编辑代码”按钮关闭类向导,跳转到代码文件中。查看DoDataExchange函数中新增的代码,可以发现MFC通过DDV_MinMaxInt函数来限制控件值变量的最小和最大值;
![[MFC开发经验(5)] 添加控件输入校验[TZZ]](https://exp-picture.cdn.bcebos.com/1f9feadca039131fb067df6ce275f2c4ed990a20.jpg)
12、调试运行代码,在弹出对话框的第3个编辑框中输入“155555555”。额?!似乎已经超过最大值了。为什么没起作用呢?关闭对话框,退出调试模式;
![[MFC开发经验(5)] 添加控件输入校验[TZZ]](https://exp-picture.cdn.bcebos.com/30601b6104a355e92325e462d22ae3efe1786820.jpg)
14、再次调试运行程序,在弹出对话框的第3个编辑框中输入“155555555”。当你点击“Button1”按钮时,由于DDV_MinM锾攒揉敫axInt函数的作用,它检测到IDC_EDIT3中输入的值超出了返回,因此它会弹出一个提示框,要求输入1000至1500之间的整数;
![[MFC开发经验(5)] 添加控件输入校验[TZZ]](https://exp-picture.cdn.bcebos.com/75af02324b18512c4d7ad412ad334884cce34920.jpg)
![[MFC开发经验(5)] 添加控件输入校验[TZZ]](https://exp-picture.cdn.bcebos.com/40d2d0e8b004541b3384fe93869a310e1699a620.jpg)
16、再次调试运行程序,在组合框控件中输入“666666”,结果发现它输入2个字符后,就不能输入了。与之前编辑框的反应一致;
![[MFC开发经验(5)] 添加控件输入校验[TZZ]](https://exp-picture.cdn.bcebos.com/8974c38a59de45078d8d34c55e413a8ca7088520.jpg)