多语言展示
当前在线:1436今日阅读:176今日分享:34

[MFC开发经验(4)] 添加控件值变量[TZZ]

大家好!今天我给大家介绍一下在MFC中为控件添加控件值成员变量的基本方法。MFC中提供的DDX/DDV机制,不仅仅可以通过控件ID将控件与控件类成员变量关联起来,还可以将控件的内容与成员变量绑定到一起。如果您觉得这篇教程有帮助,请为我投上宝贵的一票,谢谢!如果您对我写的系列教程感兴趣,就请“关注”我吧!44Visual Studio 2017安装教程4[MFC开发经验(3)] 添加控件变量[TZZ]
工具/原料
1

已安装Visual Studio 2017(或以上版本);

2

已读完“[MFC开发经验(3)] 添加控件变量[TZZ]”;

方法/步骤
1

启动VS2017软件,创建一个名为“MFCDemo4”的MFC对话框程序项目;

2

项目创建完毕后,切换到资源视图,然后打开对话框资源编辑界面。点击“CTRL + A”全选对话框上的所有控件,然后按“Delete”将它们全部删除;

3

打开“工具栏”面板,然后向对话框中拖入一些控件,比如:Button,Check Box,Edit Control,Radio Button,Static Text等控件(为了对比测试一下添加控件值变量);

4

右键单击对话框上的“Button1控件”,然后在弹出菜单中选择“添加变量”;

5

在弹出的“添加成员变量向导”窗口中,去掉“控件变量”前的勾,然后指定变量类型为“CString”(手动输入),变量名设置为“_btnCaption”(注:也可以根据需要设置访问权限)。设置完毕后,点击“完成按钮”完成成员变量添加;

6

添加控件值成员变量后,可以在MFCDemo4Dlg类的头文件中和源代码文件见到VS为我们增加的代码。点击工具栏中的保存所有文件保存文件修改,文件保存完毕后,文件标签中的星号就会消失;

7

切换到对话框编辑界面,双击“Button1控件”,添加按钮事件处理函数。在函数代码中,添加修改_btnCaption值并调用UpdateData(FALSE)函数将绑定的控件值变量的值传递给界面控件。代码编写完毕后,点击工具栏上的“本地Windows调试器”按钮调试运行程序;

8

当程序运行后,点击对话框中的“Button1”按钮,发现竟然毫无反应。代码并没有按照我预算的那样工作。只能关闭对话框,退出调试;

9

返回VS2017编辑模式后,打开“MFCDemo4Dlg.cpp”文件,找到“DoDataExchange函数”,向其中添加一行DDX_Text函数调用代码,将按钮控件的ID与成员变量_btnCaption绑定到一起。添加完代码后,点击“本地Windows调试器”,再次调试运行程序;

10

程序启动后,发现按钮标题变成了空。点击该按钮后,其标题终于变成了代码设置的文本值。测试完毕后,关闭对话框结束程序调试;

11

再次打开“MFCDemo4Dlg.cpp”文件,在CMFCDemo4Dlg类的构造函数中,你会发现_btnCaption的初始值被设置成了空值。等你查看CDialog类的源代码后(见引用文章),你就会明白,原来在CDialog的DoModal方法中调用了UpdateData(FALSE)函数,将控件值变量更新给了控件;

12

将_btnCaption的初始值设置为“BUTTON1”,然后再次调试运行程序。在程序对话框中,按钮标题已经变成了“BUTTON1”。点击按钮后,它也如期望的那样变成了之前设置的内容。表明一切正常;

13

关闭对话框结束程序调试,然后切换到对话框编辑界面。使用鼠标右键单击资源界面中的对话框,在弹出菜单中选择“类向导”,打开类向导窗口;

14

在打开的“类向导”窗口中,切换到“成员变量”选项卡。查看“成员变量列表”,可以见到MFC中支持/已添加控制值成员变量的控件ID和绑定的成员变量及类型;

15

选中“成员变量”中的“IDC_EDIT1”,然后点击右侧的“添加变量按钮”打开“添加成员变量向导”窗口。在该窗口中,为编辑框控件添加一个类型为CString的成员变量_edtCaption;

16

添加完编辑框控件的值成员变量后,类向导的成员变量列表中会多出一个“控件ID”为“<自定义变量>”的列表项。选中该列表项后,点击“编辑代码按钮”打开源代码文件;

17

查看“CMFCDemo4Dlg类”的源文件,发现DoDataChange函数中,照样没有绑定编辑框控件和控制值变量的代码。在我的映像中,从VS2005开始,它就一直忘了这件事。所以,绑定控件值变量时,这个地方只能手动添加绑定函数的代码;

18

向DoDataExachange函数中添加绑定IDC_EDIT1和_edtCaption的代码后,再次打开“类向导窗口”,你会发现IDC_EDIT1已经与_edtCaption绑定上了。点击“类向导窗口”中的“确定按钮”关闭类向导;

19

返回“MFCDemo4Dlg.cpp”文件中,在按钮的响应函数中追加设置_edtCaption值的代码。然后调试运行程序;

20

程序启动后,点击对话框中的“BUTTON1”按钮。随后,按钮和编辑框的标题均发生了改变,与代码中设置的值一致;

21

重新打开“类向导”窗口,成员变量列表中还有“IDC_CHECK1”和“IDC_COMBO1”没有绑定成员变量(注:对话框界面中不能绑定成员变量的控件ID是不会显示到这里的)。它们的设置方法与之前介绍的相同,这里就不累述了。Enjoy!

注意事项

诸位,遇到不熟悉的函数,记得搜索MFC查用法!

推荐信息