MFC之单选框,复选框[用法案例]
单选框,复选框为常见的功能按键,其使用频率也不低,并且用法非常简单,下面以一个案例介绍一下单选框和复选框的使用。
1.新建一个MFC对话框工程,按如下布局添加相关按钮。
2.1. 三个单选框默认ID为IDC_RADIO1,IDC_RADIO2和IDC_RADIO3,不更改,使用默认。
2.2. 为四个复选框关联4个控件类型变量,具体类型为CButton,变量名称分别为m_CheckLike1,m_CheckLike2,m_CheckLike3,m_CheckLike4,如图:
3.为单选框设置默认被选中状态 :
在OnInitDialog()函数 // TODO: Add extra initialization here下面添加一行代码:
CheckRadioButton(IDC_RADIO1,IDC_RADIO4,IDC_RADIO1);
//参数(第一个radio,最后一个radio,默认选中radio),编译运行后,第一个radio默认被选中:![在这里插入图片描述](https://img-blog.csdnimg.cn/2019072020023938.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mjg5OTA4OA==,size_16,color_FFFFFF,t_70)
4.为第一个“查看"按钮添加事件函数,函数名为OnSelect() ,写上如下代码:
void CRadioDlg::OnSelect()
{
CString str;
if (IsDlgButtonChecked(IDC_RADIO1))//被选中的单选框
{
str = TEXT("小明");
}
if (IsDlgButtonChecked(IDC_RADIO2))
{
str = TEXT("小敏");
}
if (IsDlgButtonChecked(IDC_RADIO4))
{
str = TEXT("肖敏");
}
AfxMessageBox(str);
}
这样运行后点击查看按钮,被选中的radio将会弹出对应的内容,即名字,并且3个radio中只有一个能被选中:
5.为复选框下面的“查看”按钮也添加一个点击事件,函数名为OnSelectLike(),
写上如下代码:
//处理复选框的普通button
void CRadioDlg::OnSelectLike()
{
CString str;
if (IsDlgButtonChecked(IDC_CHECK1))//复选框IDC_CHECK1被选中
{
str += TEXT("篮球\r\n");
}
if (IsDlgButtonChecked(IDC_CHECK2))
{
str += TEXT("游泳\r\n");
}
if (IsDlgButtonChecked(IDC_CHECK3))
{
str += TEXT("看书\r\n");
}
if (IsDlgButtonChecked(IDC_CHECK4))
{
str += TEXT("购物\r\n");
}
AfxMessageBox(str);
}
这样运行后点击查看按钮,被选中的复选框将会弹出对应的内容,即兴趣,并且可以同时多个能被选中:
注意:需要在每一行CString内容后加上 \r\n ,作用为换行显示。
相关代码:
BOOL CRadioDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//MFC默认代码
xxxxx
xxxxx
xxxxx
//MFC默认代码
// TODO: Add extra initialization here
//单选框
CheckRadioButton(IDC_RADIO1,IDC_RADIO4,IDC_RADIO1);//参数(第一个,最后一个,默认选中)
//复选框
m_CheckLike1.SetWindowText("篮球");//修改显示内容
m_CheckLike2.SetWindowText("游泳");
m_CheckLike3.SetWindowText("看书");
m_CheckLike4.SetWindowText("购物");
m_CheckLike1.SetCheck(1);//设置m_CheckLike1被选中(1选中,0不选中)
return TRUE; // return TRUE unless you set the focus to a control
}
//处理单选框的普通button
void CRadioDlg::OnSelect()
{
CString str;
if (IsDlgButtonChecked(IDC_RADIO1))//被选中的单选框
{
str = TEXT("小明");
}
if (IsDlgButtonChecked(IDC_RADIO2))
{
str = TEXT("小敏");
}
if (IsDlgButtonChecked(IDC_RADIO4))
{
str = TEXT("肖敏");
}
AfxMessageBox(str);
}
//处理复选框的普通button
void CRadioDlg::OnSelectLike()
{
CString str;
if (IsDlgButtonChecked(IDC_CHECK1))//复选框IDC_CHECK1被选中
{
str += TEXT("篮球\r\n");
}
if (IsDlgButtonChecked(IDC_CHECK2))
{
str += TEXT("游泳\r\n");
}
if (IsDlgButtonChecked(IDC_CHECK3))
{
str += TEXT("看书\r\n");
}
if (IsDlgButtonChecked(IDC_CHECK4))
{
str += TEXT("购物\r\n");
}
AfxMessageBox(str);
}