MFC基本控件2-单选按钮的使用

简介: MFC基本控件2-单选按钮的使用

接下来是第二个MFC控件-单选按钮的使用方法, 同样分为基本使用和衍生的使用。

基本使用

        首先我们准备六个单选按钮(一定要记住顺序)和一个按钮, 修改他们的ID做到见名知意(这里为了直观, 我就不修改了),接下来我们实现选中一个Radio按Button1就弹出一个提示消息框的功能。

       双击Button1添加函数,代码实现如下:

void Cclass05Dlg::OnBnClickedButton1()
{
  switch (GetCheckedRadioButton(IDC_RADIO1, //起始单选ID
                               IDC_RADIO6))//最后一个单选ID
  {
  case IDC_RADIO1:
    MessageBox(L"1Down", L"提示", 0);
    break;
  case IDC_RADIO2:
    MessageBox(L"2Down", L"提示", 0);
    break;
  case IDC_RADIO3:
    MessageBox(L"3Down", L"提示", 0);
    break;
  case IDC_RADIO4:
    MessageBox(L"4Down", L"提示", 0);
    break;
  case IDC_RADIO5:
    MessageBox(L"5Down", L"提示", 0);
    break;
  case IDC_RADIO6:
    MessageBox(L"6Down", L"提示", 0);
    break;
  }
  // TODO: 在此添加控件通知处理程序代码
}

实现效果如下 :

分组使用

       大家可以发现, 上面六个单选都是同一组,那怎么实现六个分组使用呢。这里注意单纯在GetCheckedRadioButton函数中修改参量是不行的, 正确的做法如下:

       这里假设我们想将前三个分为 一组, 后三个分为一组

       我们将第二租第一个Radio的族的值修改问True,就可以实现分组功能, 效果如下:

默认选择

       大家肯定在填写问卷或者资料的时候, 看到单选 已经默认选择好, 那我们 应该怎么设置默认值呢, 这里提供两种方法:

       不难想到,默认值就是窗口创建就已经设置好的的, 所以肯定是在窗口初始化函数中作文章。代码如下:

BOOL Cclass05Dlg::OnInitDialog()
{
  CDialogEx::OnInitDialog();
 
  // 将“关于...”菜单项添加到系统菜单中。
 
  // IDM_ABOUTBOX 必须在系统命令范围内。
  ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  ASSERT(IDM_ABOUTBOX < 0xF000);
 
  CMenu* pSysMenu = GetSystemMenu(FALSE);
  if (pSysMenu != nullptr)
  {
    BOOL bNameValid;
    CString strAboutMenu;
    bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
    ASSERT(bNameValid);
    if (!strAboutMenu.IsEmpty())
    {
      pSysMenu->AppendMenu(MF_SEPARATOR);
      pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
  }
 
  // 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
  //  执行此操作
  SetIcon(m_hIcon, TRUE);     // 设置大图标
  SetIcon(m_hIcon, FALSE);    // 设置小图标
 
  // TODO: 在此添加额外的初始化代码
  /*
  方法一:
  使用GetDlgItem函数获取窗口上的控件, 强转为CButton*类型再调用SetCheck函数设置为按下
  */
  ((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(1);
 
  /*
  方法二:
  将控件实例化为对象, 再调用SetCheck函数设置为按下
  */
  buton4.SetCheck(1);
 
  return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

效果如下:

总结:

以上就是单选框的使用, 希望大家多多指正, 接下来还会更新其他控件的使用, 欢迎交流

相关文章
|
计算机视觉
Opencv错误笔记(一):通过cv2保存图片采用中文命名出现乱码
在使用OpenCV的cv2模块保存带有中文命名的图片时,直接使用cv2.imwrite()会导致乱码问题,可以通过改用cv2.imencode()方法来解决。
907 0
Opencv错误笔记(一):通过cv2保存图片采用中文命名出现乱码
|
9月前
|
机器学习/深度学习 监控 自动驾驶
基于YOLOv8的交通标识及设施识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
本项目基于YOLOv8与PyQt5,打造交通标识及设施智能识别系统。支持图像、视频、摄像头输入,可检测人行横道、限速标志、停车标志和交通信号灯。提供完整源码、数据集、权重文件与训练教程,开箱即用,适合多场景应用。系统具备高精度、实时性强、部署便捷等优势,助力智能交通与自动驾驶发展。
基于YOLOv8的交通标识及设施识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
关于 QtCreator中写Qt程序遇到printf不输出问题 的解决方法
关于 QtCreator中写Qt程序遇到printf不输出问题 的解决方法
|
开发工具 数据安全/隐私保护 git
记录一次使用git工具拉取coding上代码密码账号错误的经历
这篇文章记录了作者在使用Git工具从Coding平台克隆项目时遇到的账号密码错误问题,并分享了通过清除电脑凭证中错误记录的账号密码来解决这个问题的方法。
记录一次使用git工具拉取coding上代码密码账号错误的经历
|
10月前
|
人工智能 数据安全/隐私保护 Docker
短短时间,疯狂斩获1.9k star,开源AI神器AingDesk:一键部署上百模型,本地运行还能联网搜索!
AingDesk 是一款开源的本地 AI 模型管理工具,已获 1.9k Star。它支持一键部署上百款大模型(如 DeepSeek、Llama),适配 CPU/GPU,可本地运行并联网搜索。五大核心功能包括零门槛模型部署、实时联网搜证、私人知识库搭建、跨平台共享和智能体工厂,满足学术、办公及团队协作需求。相比 Ollama 和 Cherry Studio,AingDesk 更简单易用,适合技术小白、团队管理者和隐私敏感者。项目地址:https://github.com/aingdesk/AingDesk。
1161 3
|
数据安全/隐私保护
思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细)
本文详细总结了思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细),看这一篇就够啦~
46419 6
思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细)
|
网络协议 安全 Linux
Linux剪裁探索初探
本文深入探讨了Linux剪裁的概念、方法、实践及其好处。Linux剪裁通过移除内核中不必要的模块和功能,减小内核大小、优化系统性能并提升安全性,特别适用于资源受限的设备和特定用途的服务器。文章详细介绍了配置内核选项、模块化和使用工具辅助剪裁的方法,并提供了一个实践示例,最后讨论了剪裁的好处与挑战。
475 15
|
编译器 C++
使用Visual Studio 2022 创建lib和dll并使用
本文介绍了如何在Visual Studio 2022中创建静态库(lib)和动态库(dll),并展示了如何使用这些库。文章详细说明了创建新项目、编写代码、生成库文件、配置项目属性以及编写测试代码的步骤,并提供了相应的截图和代码示例。作者还分享了在创建和使用库的过程中遇到的一些问题及其解决方案。
4480 0
使用Visual Studio 2022 创建lib和dll并使用
|
负载均衡 安全 Java
【C++ 并发 线程池】轻松掌握C++线程池:从底层原理到高级应用(一)
【C++ 并发 线程池】轻松掌握C++线程池:从底层原理到高级应用
2104 2

热门文章

最新文章