MFC 单选框 RadioButton

5)单选框、复选框 (特殊的CButton, 没有单选框, 复选框类型 )
	a) 单选框
		1) 属性设置:顺序排放 Ctrl+D 查看
		2) 同组第一个按钮 Group 设置为 TRUE
		3) 初始化单选框 CWnd::CheckRadioButton
		4) 按钮是否按下 CWnd::IsDlgButtonChecked
		
	b) 复选框
		1) 常关联变量 BOOL  UpdateData(TRUE), UpdateData(FALSE);
		2) 设置按钮选择状态 CButton::SetCheck
		3) 获取按钮选择状态 CButton::GetCheck
- 
Ctrl+D调整 CheckBox 为顺序的。
![]()
 - 
设定排第一个位置的属性:
Group为TRUE. - 
在
BOOL CMFCApplication4Dlg::OnInitDialog()函数中可以初始化某一个选中。 
// 默认选中
CheckRadioButton(IDC_RADIO_APPLE, IDC_RADIO_OTHER, IDC_RADIO_APPLE);  // 第一个参数,排序的第一个ID;第二个参数,排序的最后一个参数;第三个参数,需要选中的对象ID。
其实,这个 RadioButton是个特殊的按钮。也可以用点击的消息事件。
- 判断谁被选中了:
 
按钮消息事件:
void CMFCApplication4Dlg::OnBnClickedButtonSel()
{
    CString str_role;
    if (IsDlgButtonChecked(IDC_RADIO_APPLE)) {
        str_role = "苹果";
    }
    if (IsDlgButtonChecked(IDC_RADIO_LI)) {
        str_role = "梨子";
    }
    if (IsDlgButtonChecked(IDC_RADIO_OTHER)) {
        str_role = "其他";
    }
    MessageBox(TEXT("选择的是\"") + str_role + TEXT("\""));
}
也可以直接用对象的方式拿到控件的字符串:
void CMFCApplication4Dlg::OnBnClickedButtonSel2()
{
    CString str_role;
    // 判断是否选中
    if (m_RadioBtn_App.GetCheck()) {
        m_RadioBtn_App.GetWindowTextW(str_role);
    }
    if (m_RadioBtn_Li.GetCheck()) {
        m_RadioBtn_Li.GetWindowTextW(str_role);
    }
    if (m_RadioBtn_Other.GetCheck()) {
        m_RadioBtn_Other.GetWindowTextW(str_role);
    }
    MessageBox(TEXT("选择的是\"") + str_role + TEXT("\""));
}

▲ 点击事件
也可以通过变量关联控件,以对象的方式进行访问控件方法。
关联变量的方式:
CButton m_RadioBtn_App;
CButton m_RadioBtn_Li;
CButton m_RadioBtn_Other;
默认设定选中:
// 关联变量对象的方式访问
m_RadioBtn_App.SetCheck(1); // 选中   这样的代码方式,好像 RadioButton 对象之间不会互斥,代码可以出现多选的方式。
按钮点击消息事件:
void CMFCApplication4Dlg::OnBnClickedButtonSel2()
{
    CString str_role;
    // 判断是否选中
    if (m_RadioBtn_App.GetCheck()) {
        str_role = "苹果";
    }
    if (m_RadioBtn_Li.GetCheck()) {
        str_role = "梨子";
    }
    if (m_RadioBtn_Other.GetCheck()) {
        str_role = "其他";
    }
    MessageBox(TEXT("选择的是\"") + str_role + TEXT("\""));
}

▲点击
                    
                
                
            
        
浙公网安备 33010602011771号