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
  1. Ctrl+D 调整 CheckBox 为顺序的。

  2. 设定排第一个位置的属性:GroupTRUE.

  3. BOOL CMFCApplication4Dlg::OnInitDialog()函数中可以初始化某一个选中。

// 默认选中
CheckRadioButton(IDC_RADIO_APPLE, IDC_RADIO_OTHER, IDC_RADIO_APPLE);  // 第一个参数,排序的第一个ID;第二个参数,排序的最后一个参数;第三个参数,需要选中的对象ID。

其实,这个 RadioButton是个特殊的按钮。也可以用点击的消息事件。

  1. 判断谁被选中了:

按钮消息事件:

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("\""));
}


▲点击

posted @   double64  阅读(863)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示