在MFC中给输入控件添加校验的方法
大家好!今天我准备给大家介绍一下在MFC中给输入控件添加校验的方法。在之前的第3篇和第4篇文章中,我已经向大家介绍了MFC中DDX的用法,接下来,我将给大家介绍MFC中DDV的用法。同时,向大家补充一下“类向导”中添加值变量的完整过程。如果你觉得这篇教程有帮助,请为我投上宝贵的一票,谢谢!如果你对我写的系列教程感兴趣,就请“关注”我吧!
创建MFC对话框程序项目
1. 启动VS2017软件,创建一个名为“MFCDemo5”的MFC对话框程序项目。
2. 在资源视图中,打开对话框资源编辑器,删除主对话框上的所有控件(注意:默认控件一般是不需要的)。
3. 从工具栏中拖3个"Edit Control"到对话框中,然后调整它们的大小和位置。
添加控件值变量
4. 右键单击第一个编辑框,然后打开“类向导窗口”,为"IDC_EDIT1"控件添加一个私有的值变量"_edit1"。设置完毕后,点击“类向导窗口”中的“编辑代码按钮”查看代码。
5. 根据之前的经验,以这种方式添加控件值变量。VS是不会在DoDataExchange函数中为我们添加功能代码的。所以,打开"MFCDemo5Dlg.cpp"文件,手动在DoDataExchange函数中添加关联控件ID和控件值变量,以及检测控件值变量的代码。
控制输入字符个数
6. 调试运行代码,在弹出的对话框中,向第一个编辑框中输入字符。当输入字符超过6个后,就会输不进去了。这正是DDV_MaxChars函数在发挥作用。
7. 关闭对话框,退出调试并返回到对话框资源编辑页中。再次通过“类向导”为第2个编辑框添加成员变量。不同的是,这次保证“控件变量”为选中状态,然后在类别中选择“Value”。同样指定最大字符数为6。设置完毕后,点击“完成”按钮确认添加。
自动添加校验函数
8. 返回到“类向导窗口”后,你会发现按这种方式添加的控件值变量,其控件ID竟然不是“自定义变量”。点击“编辑代码按钮”,打开"MFCDemo5Dlg.cpp"文件,查看DoDataExchange函数,发现VS竟然帮我们写好了DDX_Text和DDV_MaxChars函数。也就是说,我之前给大家介绍的取消“控件变量复选框”选中的做法,其实添加的只是一个自定义变量。
设置最大和最小值
9. 调试运行代码,在第一个和第二个编辑框中,输入“12345678”。结果,由于DDV的作用,这两个编辑框中输入“123456”就无法输入了。嗯,一切正常,关闭对话框返回资源编辑页。
10. 继续通过“类向导”为第3个编辑框添加控件值变量,这次将最小值设置为“1000”,最大值设置为“1500”。然后点击“完成按钮”确认添加。
限制输入范围
11. 返回到“类向导”窗口后,点击“编辑代码”按钮关闭类向导,跳转到代码文件中。查看DoDataExchange函数中新增的代码,可以发现MFC通过DDV_MinMaxInt函数来限制控件值变量的最小和最大值。
12. 调试运行代码,在弹出对话框的第3个编辑框中输入“155555555”。额?!似乎已经超过最大值了。为什么没起作用呢?关闭对话框,退出调试模式。
更新控件值
13. 切换到对话框编辑界面,从工具栏上拖动一个“Button”控件到对话框中,然后双击该按钮控件添加单击事件响应函数。在该函数中调用UpdateData(TRUE)函数更新控件值。
14. 再次调试运行程序,在弹出对话框的第3个编辑框中输入“155555555”。当你点击“Button1”按钮时,由于DDV_MinMaxInt函数的作用,它检测到IDC_EDIT3中输入的值超出了范围,因此会弹出一个提示框,要求输入1000至1500之间的整数。
限制字符个数
15. 关闭对话框程序,返回到对话框资源编辑器页。从工具栏中拖动一个“Combo Box”控件到对话框中。然后为其添加一个值变量并且指定输入字符个数为2。
16. 再次调试运行程序,在组合框控件中输入“666666”,结果发现它输入2个字符后,就不能再输入了。与之前编辑框的反应一致。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。