多语言展示
当前在线:1787今日阅读:103今日分享:49

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

大家好!今天我给大家介绍一下MFC中添加控件变量的方法。MFC为我们提供了DDX/DDV机制,其中DDX用于绑定控件成员变量与控件资源ID,让我们可以通过控件成员变量直接管理控件资源ID对应的控件。如果您觉得这篇教程有帮助,请为我投上宝贵的一票,谢谢!如果您对我写的系列教程感兴趣的话,请“关注”我吧!44Visual Studio 2017安装教程8[MFC开发经验(2)] 设计对话框界面[TZZ]
工具/原料
1

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

2

已读完“[MFC开发经验(2)] 设计对话框界面[TZZ]”;

方法/步骤
1

启动VS2017,然后新建一个名为“MFCDemo3”的MFC对话框程序项目;

2

打开对话框资源编辑器,按下“CTRL + A”选中对话框中的所有控件,然后按“Delete键”将它们全部删除;

3

从工具箱内拖动一个“Edit Control”到对话框的左上角,然后修改其ID为“IDC_INPUTEDT”(当一个对话框上有多个控件时,一定要自定义每个控件的ID,这样可以方便写代码时识别)。修改完属性后,回到对话框中将编辑框的拖宽一些;

4

通过鼠标右键单击编辑框控件,在弹出菜单中,选择“添加变量”。在弹出的“添加成员变量向导”窗口中,选择控件变量的访问方式为“private”(即类成员的访问方式),勾选“控件变量”(即添加的变量为控件类的对象),变量类型指定为“CEdit”(注意:通过添加变量可以知道每种Windows控件在MFC中对应的MFC控件类。如果在你的项目中重载了某个MFC控件类,这里也可以写上自定义类的类名,这样该控件的所有消息就都会路由到你的自定义控件类中,由你处理了),变量名指定为“_inputEdt”(自定义的控件变量名称,由“m_”开头的变量命名法,我个人已经放弃了!)。所有设置完毕后,点击“完成”按钮,确认添加编辑框控件的控件变量(实际就是向对话框类中添加一个MFC控件类的对象(实例));

5

为编辑框添加完控件变量后,VS会自动帮我们在“MFCDemo3Dlg.h”中写上“_inputEdt”变量的声明。在“MFCDemo3Dlg.cpp”文件的“DoDataExchange()”函数实现中添加一行绑定控件变量和控件ID的“DDX_Control()”函数调用;

6

点击VS工具栏上的“本地Windows调试器”,调试运行程序。程序启动后,我们可以见到名为“MFCDemo3”的对话框。点击该对话框上的关闭按钮,结束程序;

7

切换到“MFCDemo3Dlg.cpp”选项卡页,在“OnInitDialog()”函数实现代码中,通过之前添加的控件变量_inputEdt,将编辑框的内容设置为“Hello Everyone!”(由于VS创建的项目默认采用Unicode字符集,因此,调用CWnd::SetWindowText()方法时,自动变成了CWnd::SetWindowTextW(),其参数必须为Unicode字符串(即由“L字符串”构成的字符串,如:L 'Hello Everyone!'。为了让字符串自适应多字节字符集和Unicode字符集,可以使用tchar.h中定义的_T()宏将字符串包裹起来)),然后调试运行程序。在出现的对话框中,会发现编辑框的内容已经变成了“Hello Everyone!”;

8

虽然,我们已经成功的通过控件变量_inputEdt设置了编辑框控件的文本内容。但是,编辑框中的内容总是处于全选状态,为什么?其实,这是由于对话框中的自动聚焦功能造成的。由于对话框中只有一个编辑框控件,那么只要程序启动,输入焦点就会自动落到该控件上。而编辑框控件默认获得焦点后,会自动全选文本,因此就形成了这种效果;

9

退出程序调试状态,然后从工具箱中拖动一个“Button”控件到对话框上并调整其位置。放置好按钮控件后,点击VS菜单栏上的“格式 > Tab键顺序”(或“CTRL + D”)。当对话框中的控件显示数字编号后,用鼠标左键点击一下“Button1”将其指定为界面中第一个获得焦点的控件。如果对话框中还有其他控件需要设置Tab顺序的话,你可以继续依次点击它们。Tab顺序设置完毕后,可以用鼠标左键点一个对话框空白处或者按下“CTRL + D”结束Tab顺序设置;

10

再次调试运行程序,你会发现,对话框的输入焦点已经落到到“Button1”上。编辑框由于没有获得焦点,内容也就没有被全选了。此时,也可以按下“Tab键”,将焦点移动到编辑框控件上,你会发现,当编辑框获得焦点后,其中的文本也会被自动全部选中;

11

结束程序调试,然后为“Button1”控件添加一个名为“_inputBtn”的控件变量。查看VS自动为我们添加的代码,你会发现其位置与之前编辑框控件一模一样。其实,这就是通过VS添加控件变量的固定模式,适用于所有控件;

13

VS识别不到资源ID的情况会经常发生,当出现这种情况时。只需要双击打开“resource.h”头文件(如果此刻正在设计对话框的话,VS会弹出是否关闭它的提示框,点击是按钮即可),然后在空白行按下回车并保存即可;

14

继续在“OnInitDialog()”函数中添加设置按钮标题的代码。然后调试运行程序,你会发现按钮控件的标题已经被我们修改成了指定的内容;

15

如果你希望了解MFC控件类可以对控件进行哪些操作。请自行在“Help Viewer”中搜索MFC控件类的类名,然后查看其帮助内容。Enjoy!

推荐信息