[MFC开发经验(3)] 添加控件变量[TZZ]
来源:网络收集 点击: 时间:2024-08-16启动VS2017,然后新建一个名为“MFCDemo3”的MFC对话框程序项目;

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


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



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


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


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


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


虽然,我们已经成功的通过控件变量_inputEdt设置了编辑框控件的文本内容。但是,编辑框中的内容总是处于全选状态,为什么?其实,这是由于对话框中的自动聚焦功能造成的。由于对话框中只有一个编辑框控件,那么只要程序启动,输入焦点就会自动落到该控件上。而编辑框控件默认获得焦点后,会自动全选文本,因此就形成了这种效果;
9/15退出程序调试状态,然后从工具箱中拖动一个“Button”控件到对话框上并调整其位置。放置好按钮控件后,点击VS菜单栏上的“格式 Tab键顺序”(或“CTRL + D”)。当对话框中的控件显示数字编号后,用鼠标左键点击一下“Button1”将其指定为界面中第一个获得焦点的控件。如果对话框中还有其他控件需要设置Tab顺序的话,你可以继续依次点击它们。Tab顺序设置完毕后,可以用鼠标左键点一个对话框空白处或者按下“CTRL + D”结束Tab顺序设置;




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

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



如果你仔细观察的话,你会发现第2个“DDX_Control()”函数中的“IDC_BUTTON1”参数下出现了红色的线,表示VS认为这个ID没有定义。果真如此?调试运行程序后,发现程序一切正常;

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




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


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


版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_1127485.html