关闭

Windows编程基础--第15节 MFC之复选框及单选按钮

标签: mfcwindows
1613人阅读 评论(0) 收藏 举报
分类:

Windows编程基础–第15节 MFC之复选框及单选按钮

1. 新建项目

新建一个基于对话框项目“day17”,布局如下,自行处理:
这里写图片描述

拖动三个check box和两个radio button到界面上,设置其ID如下:

控件名 控件ID
红色 IDC_CHECK_RED
绿色 IDC_CHECK_GREEN
蓝色 IDC_CHECK_BLUE
矩形 IDC_RADIO_SQURAE
圆形 IDC_RADIO_CIRC

执行“工具”->“tab键位置”,确保两个radio button的顺序是连续的,如下图:
这里写图片描述
这里写图片描述

指定第一个radio button(矩形)的Group的值为true,如图:
这里写图片描述

2. 添加关联变量

添加五个控件的变量,如图:
这里写图片描述

    DDX_Control(pDX, IDC_CHECK_RED, m_chk_red);
    DDX_Control(pDX, IDC_CHECK_GREEN, m_chk_green);
    DDX_Control(pDX, IDC_CHECK_BLUE, m_chk_blue);
    DDX_Control(pDX, IDC_RADIO_SQURAE, m_rd_squ);
    DDX_Control(pDX, IDC_RADIO_CIRC, m_rd_circ);

分别添加如上变量;

3. 开始写代码吧

现在我们来让程序运行起来时默认选中圆形;
切换到解决方案视图,进入BOOL Cday17Dlg::OnInitDialog()方法:
在末尾return前加入这一行:

    // TODO: 在此添加额外的初始化代码
    CheckRadioButton(IDC_RADIO_SQURAE,IDC_RADIO_CIRC,IDC_RADIO_CIRC);

    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

代码解释:

在IDC_RADIO_SQURAE和IDC_RADIO_CIRC之间选中IDC_RADIO_CIRC

添加五个控件的事件处理方法

如图所示:
这里写图片描述
剩下四个都如上添加好;
编辑“蓝色”按钮的点击方法:

void Cday17Dlg::OnBnClickedCheckBlue()
{
    // TODO: 在此添加控件通知处理程序代码
    Invalidate();
}

代码解释:

Invalidate()让对话框重汇对话框;

添加擦除背景消息(OnEraseBkgnd)事件

如图添加OnEraseBkgnd消息处理函数:
这里写图片描述
编辑OnEraseBkgnd函数:

BOOL Cday17Dlg::OnEraseBkgnd(CDC* pDC)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    BOOL bRet = CDialogEx::OnEraseBkgnd(pDC);
    int nRed,nGreen,nBlue;
    nRed = m_chk_red.GetCheck() ? 255 : 0;
    nGreen = m_chk_green.GetCheck() ? 255 : 0;
    nBlue = m_chk_blue.GetCheck() ? 255 : 0;

    COLORREF crFore = RGB(nRed,nGreen,nBlue);
    CBrush brush;
    brush.CreateSolidBrush(crFore);
    CBrush *pOldBrush = pDC->SelectObject(&brush);

    RECT rc = {100, 40, 400, 340};
    if (m_rd_squ.GetCheck())
    {
        pDC->Rectangle(&rc);
    }
    else{
        pDC->Ellipse(&rc);
    }
    pDC->SelectObject(pOldBrush);
    return bRet;
}

代码解释:

  1. 根据颜色按钮的选择状态来选择颜色为255还是0;
  2. 用三个的颜色来创建一个画刷;
  3. 保留旧的画刷;
  4. 创建RECT 对象,即圆形的大小;
  5. 根据形状的radio button来选择化圆形还是矩形;
  6. 还原旧的画刷;

实现其他按钮

其他按钮就只用调用OnBnClickedCheckBlue()就可以了;

最终效果图:

这里写图片描述

项目源码可以访问我的码云

>>>我的私人博客<<<

0
0
查看评论

在angular2表单中封装的多选框方法,附带结果返回

废话不多说上代码,说明都在代码里面 import { Injectable } from '@angular/core'; @Injectable() export class CheckboxService { constructor() { } //...
  • ollin2012
  • ollin2012
  • 2017-12-30 14:53
  • 36

Android之复选框对话框

main.xml布局文件 xml version="1.0" encoding="utf-8"?> LinearLayout xmlns:android="http://schemas.android.com/apk/res/android...
  • wenzhenyu1990
  • wenzhenyu1990
  • 2013-11-13 23:24
  • 643

编程之美...构造数独

我用了《编程之美》1.15节的第二种方法,也就是用矩阵行交换和列交换,这个方法的优点就是速度很快,缺点就是只能构造9!种,离所有合法数独总数差的很远。  自我感觉我实现的还不错,构造9*9的数独,我只用了3*3的基本九宫格和3*3的变换数组,省了7/9的空间。  关于书上提到的第一种用DFS的方法,...
  • meiyuli
  • meiyuli
  • 2010-01-16 22:15
  • 2092

jQueryMobile控件之复选框

Title 我是Section标题 我是内容,你要咋个? ...
  • weixin_37141881
  • weixin_37141881
  • 2016-12-14 09:49
  • 41

javascript之复选框

window.onload = function(){ selAll = document.getElementById("selAll"); hobbys = document.getElementsByName("hobby"); fx = documen...
  • CSDNmazhiyuan
  • CSDNmazhiyuan
  • 2017-09-26 11:16
  • 69

win32之复选框

win32. 获取和设置选择状态 BM_SETCHECK   wParam -- 状态   lparam  -- 不用,给0; BM_GETCHECK:    wParam/lParam-- 都为0,其状态通过SendMessag...
  • u014660247
  • u014660247
  • 2016-10-18 18:12
  • 110

jQuery之复选框

无标题文档 客户管理 客户拜访 联系人列表 联系记录列表 客户查重设置 老师 学生甲 学生乙 学生丙 学生丁 function goselect(id){ var array=id....
  • kutekute
  • kutekute
  • 2013-01-26 17:00
  • 529

安卓控件之复选框 (CheckBox)

概述: CheckBox是和RadioButton一样是常见的选项控件,CheckBox是复选框控件即用户可任意选择多个选项 属性和方法: XML属性 方法 备注 android:text setText(CharSequ...
  • Mr_gxj
  • Mr_gxj
  • 2016-08-21 11:37
  • 153

JavaScript 之复选框

本文主要的知识是对 JavaScript 中的复选框的应用 掌握复选框的全选和反选 单选框和复选框比较类似 一般是一组为单位使用         使用的时候 name 属性  一组是一样的。 全选、反选 ...
  • wq857260622
  • wq857260622
  • 2017-11-07 19:55
  • 42

windows基础编程 -- 资源

前言VC环境可以通过资源脚本文件(.rc)给当前程序添加资源,这些资源包括: Accelerator(加速键),Bitmap(位图),Cursor(光标),Dialog(对话框),HTML(网页脚本),Icon(图标),Menu(菜单),StringTable(字符表),ToolBar(工具栏),V...
  • diletrich
  • diletrich
  • 2016-02-18 23:17
  • 333
    个人资料
    • 访问:40628次
    • 积分:696
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:6篇
    • 译文:0篇
    • 评论:1条
    文章分类