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("\""));
}
▲点击
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了