参考博客:VS2010/MFC编程入门之二十三(常用控件:按钮控件的编程实例)-软件开发-鸡啄米

以下内容主要来自于上述大神博客,稍作修改

1、首先还是新建一个mfc的应用程序(基于对话框的)

2、删除掉对话框中原有的一些默认控件,然后再拖动两个 Group Box上来,更改Caption分别网站类型、网站,同时在类型中加入三个Radio Button,分别更改Caption为门户、论坛、博客,如下:ID分别设为IDC_PORTAL_RADIO、IDC_FORUM_RADIO和IDC_BLOG_RADIO。

3、再拖动6个Check Box,Caption分别为:littlehero_121、“新浪”、“天涯论坛”、“韩寒博客”、“网易”和“凤凰网论坛”,然后为每个复选框添加CButton类型的变量m_check1、m_check2、m_check3、m_check4、m_check5和m_check6

6、在拖动静态文本框和一个编辑框,静态文本框的Caption设为“选择的网页:编辑框的ID设为IDC_WEBSITE_SEL_EDIT,属性Read Only改为True,使此编辑框为只读状态,不允许用户编辑

(吐槽一下,可能是我还不知道怎么用,这个界面怎么对齐,qt里面的对齐还是挺好用的)

7、为“门户”、“论坛”和“博客”三个单选按钮分别添加点击消息的消息处理函数CExample23Dlg::OnBnClickedPortalRadio()、CExample23Dlg::OnBnClickedForumRadio()和CExample23Dlg::OnBnClickedBlogRadio()。  在某个单选按钮被点击之后,我们可以先将复选框都禁用且置为非选中状态,而后将选择的类型对应的复选框激活。为了代码复用,我们将置所有复选框为禁用且非选中状态的操作写到一个函数里,此函数为CExample23Dlg::InitAllCheckBoxStatus(),然后就可以在三个单选按钮的消息处理函数中调用InitAllCheckBoxStatus(),实现复选框状态的初始化

具体实现函数如下:

void Ctest04Dlg::OnBnClickedPortalRadio()
{// TODO: 在此添加控件通知处理程序代码// 如果选择了“门户”单选按钮,则激活复选框“新浪”和“网易”,其他复选框禁用并非选中   InitAllCheckBoxStatus();   m_check2.EnableWindow(TRUE);   m_check5.EnableWindow(TRUE);
}void Ctest04Dlg::OnBnClickedForumRadio()
{// TODO: 在此添加控件通知处理程序代码// 如果选择了“论坛”单选按钮,则激活复选框“天涯论坛”和“凤凰网论坛”,其他复选框禁用并非选中   InitAllCheckBoxStatus();   m_check3.EnableWindow(TRUE);   m_check6.EnableWindow(TRUE);
}void Ctest04Dlg::OnBnClickedBlogRadio()
{// TODO: 在此添加控件通知处理程序代码// 如果选择了“博客”单选按钮,则激活复选框“littlehero_121”和“韩寒博客”,其他复选框禁用并非选中   InitAllCheckBoxStatus();   m_check1.EnableWindow(TRUE);   m_check4.EnableWindow(TRUE);
}void Ctest04Dlg::InitAllCheckBoxStatus()
{// 全部禁用   m_check1.EnableWindow(FALSE);   m_check2.EnableWindow(FALSE);   m_check3.EnableWindow(FALSE);   m_check4.EnableWindow(FALSE);   m_check5.EnableWindow(FALSE);   m_check6.EnableWindow(FALSE);   // 全部非选中   m_check1.SetCheck(0);   m_check2.SetCheck(0);   m_check3.SetCheck(0);   m_check4.SetCheck(0);   m_check5.SetCheck(0);   m_check6.SetCheck(0);   }

8. 程序运行后,我们希望网站类型默认选择为“门户”,则修改对话框初始化函数CExample23Dlg::OnInitDialog()为:

BOOL Ctest04Dlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){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: 在此添加额外的初始化代码// 默认选中“门户”单选按钮   CheckDlgButton(IDC_PORTAL_RADIO, 1);   OnBnClickedPortalRadio();   return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

9、为确定和退出按钮添加事件,实现如下:

//确定
void Ctest04Dlg::OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码CString strWebsiteSel;         // 选择的网站   // 若选中“littlehero_121”则将其加入结果字符串   if (1 == m_check1.GetCheck())   {   strWebsiteSel += _T("littlehero_121 ");   }   // 若选中“新浪”则将其加入结果字符串   if (1 == m_check2.GetCheck())   {   strWebsiteSel += _T("新浪 ");   }   // 若选中“天涯论坛”则将其加入结果字符串   if (1 == m_check3.GetCheck())   {   strWebsiteSel += _T("天涯论坛 ");   }   // 若选中“韩寒博客”则将其加入结果字符串   if (1 == m_check4.GetCheck())   {   strWebsiteSel += _T("韩寒博客 ");   }   // 若选中“网易”则将其加入结果字符串   if (1 == m_check5.GetCheck())   {   strWebsiteSel += _T("网易 ");   }   // 若选中“凤凰网论坛”则将其加入结果字符串   if (1 == m_check6.GetCheck())   {   strWebsiteSel += _T("凤凰网论坛 ");   }   // 将结果字符串显示于“选择的网站”后的编辑框中   SetDlgItemText(IDC_WEBSITE_SEL_EDIT, strWebsiteSel);
}
//退出
void Ctest04Dlg::OnBnClickedButton2()
{// TODO: 在此添加控件通知处理程序代码exit(0);
}

10、最终实现效果,如下:

MFC入门基础(十一)控件编程示例相关推荐

  1. MFC控件编程之复选框单选框分组框

    MFC控件编程之复选框单选框分组框 一丶分组框 分组框 英文叫做 GroubBox 添加了分组框主要就是分组.好看.不重点介绍 二丶单选框 英文: Raido Button 单选框需要注意的事项 1. ...

  2. MFC控件编程之组合框跟列表框

    MFC控件编程之组合框跟列表框 一丶简介 如果要使用组合框跟列表框.那么就要知道.组合框列表框是最核心的东西就是索引. 索引是从0开始的. 二丶组合框列表框常用的方法 AddString(字符串) 添 ...

  3. mfc入门基础(六)创建模态对话框与非模态对话框

    参考博客: VS2010/MFC编程入门之十一(对话框:模态对话框及其弹出过程)-软件开发-鸡啄米 一.创建模态对话框 1.接着上节中的test02的例子来讲,找到test02.cpp文件,找到函数I ...

  4. Qt 5入门指南之Qt Quick编程示例

    Qt 5入门指南之Qt Quick编程示例 使用Qt创建应用程序是十分简单的.考虑到你的使用习惯,我们编写了两套教程来实现两个相似的应用程序,但是使用了 不同的方法.在开始之前,请确保你已经下载了Qt ...

  5. VC6.0 MFC 列表框 列表控件 添加 修改 删除

    VC6.0 MFC 列表框 列表控件 添加 修改 删除 写在前面:列表框是很常用,并且很重要的一个控件,那么接下来,就跟随我的脚步,去探索它的奥秘吧! 一.未卜先知 1.编译运行后,点击"学 ...

  6. 微软的PivotViewer控件编程续

    在前一篇微软的PivotViewer控件编程中,讲到了创建PivotViewer使用的静态数据源的方法.但是手工创建CXML,或者在Excel里面一个个输入PivotViewer里面的数据的确是太麻烦 ...

  7. [WP8.1UI控件编程]SemanticZoom控件实现分组列表

    11.1.5 SemanticZoom实现分组列表 SemanticZoom控件可以让用户实现一种更加高级的列表,这种列表可以对列表的项目进行分组,同时这个SemanticZoom控件会提供两个具有相 ...

  8. Android - 最基础的控件TextView

    TextView TextView是一个十分简单和基础的控件,相信大家使用TextView主要就是用来显示文字的, 而创建一个项目的时候,页面显示的就一个内容为Hello World 的 TextVi ...

  9. 安卓开发入门教程-UI控件_EditText

    什么是EditText EditText是用于进行文本输入的UI控件. 基础样例 1.普通输入 效果图 代码 <EditTextandroid:layout_width="wrap_c ...

最新文章

  1. 基于Servlet+JSP+JavaBean开发模式的用户登录注册
  2. 新学期的一些安排 | 以及一些小建议
  3. 复选框 全选 全不选 反选 实现
  4. java中文件处理之图片_在Java 7中处理文件
  5. 真正的模块化Web应用程序:为什么没有开发标准?
  6. jedispool redis哨兵_通过java哨兵JedisSentinelPool代码示例连接对配置的redis哨兵主从模式进行测试验证...
  7. Qt pro文件语法
  8. linux终端美化,如何美化你的命令行终端Terminal
  9. dubbo 异步调用
  10. SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理...
  11. 如何在Mac OS X 10.6.4上卸载Python 2.7?
  12. 剖析Disruptor:为什么会这么快?(三)揭秘内存屏障
  13. HDU 3732 Ahui Writes Word
  14. 【INDIRECT】函数教你制作多级下拉菜单
  15. win10系统怎么找服务器地址,win10系统下如何快速查找本地ip地址
  16. 电商直播发展正夯,搭建电商网站需要怎样的云服务器配置?
  17. 两分钟读懂什么是TPS和QPS
  18. 全世界时差整理(不含夏冬令时)
  19. 天翼云对象存储Java对接(经典版 Ⅱ型)
  20. html文件导入到u盘中,技术分享 - 编程实现U盘插入自动复制U盘内容到本地

热门文章

  1. 主机/路由/交换/防火墙 OID查询、MIB浏览
  2. Windows 7,win7,旗舰版,家庭版,企业版等版本主要区别
  3. 猫猫学IOS(十七)UI之纯代码自定义Cell实现新浪微博UI
  4. sas硬盘安装linux,Intel SAS RAID安装CentOS 5.4 Linux操作系统的方法
  5. echart 柱状图 添加svg小图标
  6. jlink下载速度太慢,不能选择高速度的
  7. 为测试赋能,腾讯WeTest探索手游AI自动化测试之路
  8. 博客园SimpleMemory主题美化
  9. 网络继电器控制器(32 路):Y1-Y32继电器的开关
  10. Simulink代码生成: Assignment模块及其代码