VS2013/MFC编程入门之二十二(常用控件:按钮控件的编程实例)
来源:互联网 发布:sql delete where 编辑:程序博客网 时间:2024/05/17 16:02
上一节VS2013/MFC编程入门教程中讲了按钮控件Button、Radio Button和Check Box的基本用法,本节就继续讲按钮控件的内容,通过一个实例让大家更清楚按钮控件在实际的软件开发中如何使用。
因为Button控件在前面的例子中涉及到了,比较简单,本文就不作深入分析了,而是重点讲解单选按钮Radio Button、复选框Check Box的使用。
按钮控件实例的功能
首先介绍此实例实现的功能。此实例用来根据不同学院来选择不同的专业,并将选择的专业的名称显示到编辑框中。学院名称有“信息学院”、“土木学院”和“外语学院”三种,为单选按钮。网站有七个:通信、计算机、软件、英语、日语、隧道和桥梁,均为复选框。
当选中某种学院即点了某个单选按钮时,其对应的专业的复选框就激活。例如,如果选中了“土木学院”单选按钮,则“隧道”、“桥梁”复选框激活,允许用户选择,而其他复选框则禁用。
按钮控件实例的实现
下面为大家详细阐述此实例的编写步骤。
1. 创建一个基于对话框的MFC工程,名称设为“Example22”。
2. 在自动生成的主对话框IDD_EXAMPLE22_DIALOG的模板中,删除“TODO: 在此处放置对话框控件.”静态文本框,添加三个Radio Button,属性Caption分别改为“信息学院”、“外语学院”、“土木学院”,ID分别设为IDC_COM_RADIO、IDC_LAN_RADIO和IDC_BUI_RADIO。
3. 在对话框中加入七个Check Box,Caption分别设为“通信”、“计算机”、“软件”、“英语”、“日语”、“隧道”和“桥梁”,ID分别设为IDC_CHECK1、IDC_CHECK2、IDC_CHECK3、IDC_CHECK4、IDC_CHECK5、IDC_CHECK6和IDC_CHECK7。然后为每个复选框添加CButton类型的变量m_com、m_computer、m_software、m_english、m_janpan、m_sudiao和m_bridge。
4. 在对话框中添加一个静态文本框和一个编辑框。静态文本框的Caption设为“选择的专业:”。编辑框的ID设为IDC_EDIT1,属性Read Only改为True,使此编辑框为只读状态,不允许用户编辑。
5. 将“取消”按钮的Caption修改为“退出”。到此,对话框模板就修改好了,如下图:
6. 为“信息学院”、“外语学院”和“土木学院”三个单选按钮分别添加点击消息的消息处理函数CExample22Dlg::OnBnClickedRadio1()、CExample22Dlg::OnBnClickedRadio2()和CExample22Dlg::OnBnClickedRadio3()
在某个单选按钮被点击之后,我们可以先将六个网站复选框都禁用且置为非选中状态,而后将选择的网站类型对应的网站复选框激活。为了代码复用,我们将置所有复选框为非选中状态的操作写到一个函数里,此函数为CExample22Dlg::AllCheck(),然后就可以在三个单选按钮的消息处理函数中调用AllCheck(),实现复选框状态的初始化。
三个消息处理函数及AllCheck()函数的实现如下:
void CExample22Dlg::AllCheck(){m_suidao.SetCheck(0);m_bridge.SetCheck(0);m_english.SetCheck(0);m_janpan.SetCheck(0);m_com.SetCheck(0);m_computer.SetCheck(0);m_software.SetCheck(0);}
void CExample22Dlg::OnBnClickedRadio1(){// TODO: 在此添加控件通知处理程序代码AllCheck();m_suidao.EnableWindow(FALSE);m_bridge.EnableWindow(FALSE);m_english.EnableWindow(FALSE);m_janpan.EnableWindow(FALSE);m_com.SetCheck(1);m_computer.SetCheck(1);m_software.SetCheck(1);}
void CExample22Dlg::OnBnClickedRadio2(){// TODO: 在此添加控件通知处理程序代码AllCheck();m_com.EnableWindow(FALSE);m_computer.EnableWindow(FALSE);m_english.EnableWindow(FALSE);m_janpan.EnableWindow(FALSE);m_software.EnableWindow(FALSE);m_suidao.SetCheck(1);m_bridge.SetCheck(1);}
void CExample22Dlg::OnBnClickedRadio3(){// TODO: 在此添加控件通知处理程序代码AllCheck();m_suidao.EnableWindow(FALSE);m_bridge.EnableWindow(FALSE);m_com.EnableWindow(FALSE);m_computer.EnableWindow(FALSE);m_software.EnableWindow(FALSE);m_english.SetCheck(1);m_janpan.SetCheck(1);}7. 程序运行后,当我们点击“确定”按钮,即在编辑框中显示选中的专业名称。确定按钮的函数实现代码如下:
void CExample22Dlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码CString string=_T(" ");if (m_suidao.GetCheck() == 1)string += _T(" 隧道");if (m_english.GetCheck() == 1)string += _T(" 英语");if (m_janpan.GetCheck() == 1)string += _T(" 日语");if (m_com.GetCheck() == 1)string += _T(" 通信");if (m_computer.GetCheck() == 1)string += _T(" 计算机");if (m_bridge.GetCheck() == 1)string += _T(" 桥梁");if (m_software.GetCheck() == 1)string += _T(" 软件");SetDlgItemText(IDC_EDIT1,string);}
8程序运行结果如下图所示:
- VS2013/MFC编程入门之二十二(常用控件:按钮控件的编程实例)
- VS2010/MFC编程入门之二十二(常用控件:按钮控件的编程实例)
- VS2010/MFC编程入门之二十二(常用控件:按钮控件的编程实例)
- VS2010/MFC编程入门之二十三(常用控件:按钮控件的编程实例)
- VS2013/MFC编程入门之二十一(常用控件:按钮控件Button、Radio Button和Check Box)
- VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)
- VS2013/MFC编程入门之二十三(常用控件:列表框控件ListBox)
- VS2013/MFC编程入门之二十四(常用控件:组合框控件Combo Box)
- VS2013/MFC编程入门之二十五(常用控件:滚动条控件Scroll Bar)
- VS2013/MFC编程入门之二十六(常用控件:图片控件Picture Control)
- VS2013/MFC编程入门之二十七(常用控件:列表视图控件List Control 上)
- VS2013/MFC编程入门之二十八(常用控件:列表视图控件List Control 下)
- VS2013/MFC编程入门之二十九(常用控件:树形控件Tree Control 上)
- VS2013/MFC编程入门之二十(常用控件:编辑框Edit Control)
- VS2013/MFC编程入门之三十(常用控件:树形控件Tree Control 下)
- VS2013/MFC编程入门之三十一(常用控件:标签控件Tab Control )
- VS2010/MFC编程入门之二十一(常用控件:按钮控件Button、Radio Button和Check Box)
- VS2010/MFC编程入门之二十一(常用控件:按钮控件Button、Radio Button和Check Box)
- 【Linux】管道的通信总结
- Java模拟post请求
- gradle bug solution
- 滚动条
- TimePicker DatePicker使用
- VS2013/MFC编程入门之二十二(常用控件:按钮控件的编程实例)
- 从上往下遍历二元树
- 在Java中使用标准输入输出设备进行字符串,整数浮点数等 的输入输出操作
- 【计算机视觉】OpenCV的最近邻开源库FLANN
- 51nod 1128 正整数分组 V2
- 第13周OJ实践 文件操作
- 前序、中序、后序二叉树遍历
- 内核堆栈溢出
- 产品开发问题总结