MFC中Radio Button互斥操作

概述

Radio Button通常成组使用,组内是互斥的。

如何设置分组

(1)Ctrl+D

(2)依次点击Radio Button完成Tab键顺序设置

(3)将一组内首个Radio Button的Group属性设置成TRUE,其他为FALSE。系统每检测到一个Group属性为TRUE的Radio Button,都会认为是一个新分组。

操作

在OnInitDialog()中设置RadioButton的初始选中状态,只需将每组选中的Radio Button进行设置,组内其余的Radio Button是互斥不选中的。

                ((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE); //选上

通过Radio Button点击事件来设置新Radio Button状态,依然是只操作组内被选中的Radio Button即可。

### MFC中单选按钮的使用方法 在MFC应用程序中,`CRadioButton` 控件用于创建单选按钮。这些控件通常成组出现,允许用户从中选择一项。下面是一个详细的例子来展示如何在一个对话框应用中实现单选按钮的功能。 #### 创建和管理单选按钮 当设计一个基于对话框的应用程序时,在资源编辑器中添加多个 `RadioButton` 到对话框模板上,并确保它们属于同一个逻辑分组以便一次只能有一个选项被选中。可以通过设置属性中的 "Group" 属性来指定哪些按钮应该归入同一组[^1]。 对于动态控制单选按钮的行为以及响应用户的交互事件,可以为每一个单选按钮关联特定的消息映射函数。例如: ```cpp // 在头文件 (.h) 中声明成员变量和消息处理函数原型 protected: afx_msg void OnBnClickedPortalRadio(); afx_msg void OnBnClickedForumRadio(); afx_msg void OnBnClickedBlogRadio(); private: void InitAllCheckBoxStatus(); // 初始化所有复选框状态的方法 ``` 接着是在CPP文件(.cpp)内定义上述提到的消息处理器: ```cpp BEGIN_MESSAGE_MAP(CExample23Dlg, CDialogEx) ON_BN_CLICKED(IDC_PORTAL_RADIO, &CExample23Dlg::OnBnClickedPortalRadio) ON_BN_CLICKED(IDC_FORUM_RADIO, &CExample23Dlg::OnBnClickedForumRadio) ON_BN_CLICKED(IDC_BLOG_RADIO, &CExample23Dlg::OnBnClickedBlogRadio) END_MESSAGE_MAP() void CExample23Dlg::OnBnClickedPortalRadio() { InitAllCheckBoxStatus(); EnableSpecificControls(TRUE); } void CExample23Dlg::OnBnClickedForumRadio() { InitAllCheckBoxStatus(); EnableOtherSpecificControls(TRUE); } void CExample23Dlg::OnBnClickedBlogRadio() { InitAllCheckBoxStatus(); EnableAnotherSetOfControls(TRUE); } ``` 其中 `InitAllCheckBoxStatus()` 方法用来重置其他相关联控件的状态,比如禁用某些复选框并清除其当前的选择标记;而像 `EnableSpecificControls(TRUE)` 这样的辅助函数则负责启用或禁用与选定单选按钮相对应的具体控件集[^4]。 另外,如果希望窗口加载完成之后自动选中某一个默认项,则可以在对话框类的 `OnInitDialog()` 成员函数里面加入如下代码片段以达到目的: ```cpp BOOL CUniversDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 设置默认选中第一个单选按钮 CheckDlgButton(IDC_RADIO_FPS, BST_CHECKED); // 调用相应单选按钮点击后的处理函数 OnBnClickedRadioFps(); return TRUE; // 返回TRUE除非设置了焦点 } ``` 这段代码会使得名为 `"FPS"` 的单选按钮成为初始状态下唯一处于选中状态的那个按钮,并触发它所绑定的消息处理过程[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jr9910

坚持高质量的原创

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值