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程序运行结果如下图所示:


        按钮控件的内容就这些了。掌握了按钮控件的基本用法,又动手编写了这个实例后,相信大家对按钮控件已经很熟悉了。欢迎大家继续关注我的博客,通过留言来进行学习交流。



2 0