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竟然不是“自定义变量”。点击“编辑代码按钮”,打开“MFCDe罪焐芡拂mo5Dlg.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_MinM锾攒揉敫axInt函数的作用,它检测到IDC_EDIT3中输入的值超出了返回,因此它会弹出一个提示框,要求输入1000至1500之间的整数;
15、关闭对话框程序,返回到对话框资源编辑器页。从工具栏中拖动一个“Combo Box”控件到对话框中。然后为其添加一个值变量并且指定输入字符个数为2;
16、再次调试运行程序,在组合框控件中输入“666666”,结果发现它输入2个字符后,就不能输入了。与之前编辑框的反应一致;