一新建一个工程

 

二 增加两个分组框(Group Box)

改名为颜色和形状

VS2019 C++ 学习笔记二(复选框)

三 增加三个复选框(Check Box)

VS2019 C++ 学习笔记二(复选框)

 

 

 

四 增加两个单选框(Radio Button)

VS2019 C++ 学习笔记二(复选框)

 

注意单选按键的TAB键顺序必须是连续的

查看方法:格式->TAB键顺序  就可以查看

VS2019 C++ 学习笔记二(复选框)

 

五  按键 更改ID

VS2019 C++ 学习笔记二(复选框)

分别为IDC_CHK_RED, IDC_CHK_GREEN, IDC_CHK_BLUE,

IDC_RD_RECT, IDC_RD_ROUND

 

六给控件添加变量

VS2019 C++ 学习笔记二(复选框)

三个分别为  m_chk_red,m_chk_green,m_chk_blue

另外两个分别为 m_rd_rect, m_rd_round

VS2019 C++ 学习笔记二(复选框)

七其进行代码编辑

添加初始化代码

VS2019 C++ 学习笔记二(复选框)

增加一条

CheckRadioButton(IDC_RD_RECT, IDC_RD_ROUND, IDC_RD_ROUND);

三个函数的意思是,从第一个参数到第二个但是选择第三个参数。

打开后就默认选择的圆形。

VS2019 C++ 学习笔记二(复选框)

 

添加事件处理程序

VS2019 C++ 学习笔记二(复选框)

VS2019 C++ 学习笔记二(复选框)

会看到新增加了一个函数

void CAboutDlg::OnBnClickedChkBlue()

{

    // TODO: 在此添加控件通知处理程序代码

  

}

添加

void CMFCRBdemoDlg::OnBnClickedChkBlue()

{

    // TODO: 在此添加控件通知处理程序代码

    Invalidate();//失效,会重新绘制对话框,擦除背景

}

点击对话框

VS2019 C++ 学习笔记二(复选框)

 

消息里面选择擦除背景。

VS2019 C++ 学习笔记二(复选框)

找到WM_ERASEBKGND,添加

BOOL CMFCRBdemoDlg::OnEraseBkgnd(CDC* pDC)

{

    // TODO: 在此添加消息处理程序代码和/或调用默认值

 

    return CDialogEx::OnEraseBkgnd(pDC);

}

 

 

 

添加代码如下

void CMFCRBdemoDlg::OnBnClickedRdRound()

{

    // TODO: 在此添加控件通知处理程序代码

    OnBnClickedChkBlue();

}

 

 

//这里擦除了背景,在这里添加绘制函数

BOOL CMFCRBdemoDlg::OnEraseBkgnd(CDC* pDC)

{

    // TODO: 在此添加消息处理程序代码和/或调用默认值

 

    BOOL bRet = CDialogEx::OnEraseBkgnd(pDC);

    int nRed, nGreen, nBlue;

    nRed = m_chk_red.GetCheck() ? 255 : 0;              //如果红色复选框被选中,那么红色调整为255,否则为0

    nGreen = m_chk_green.GetCheck() ? 255 : 0;          //如果绿色复选框被选中,那么绿色调整为255,否则为0

    nBlue = m_chk_blue.GetCheck() ? 255 : 0;            //如果蓝色复选框被选中,那么蓝色调整为255,否则为0

 

    COLORREF crFore = RGB(nRed,nGreen,nBlue);          //RGB 三个颜色进行组合

    CBrush brush;                                       //创建一个刷子

    brush.CreateSolidBrush(crFore);                     //使用这个颜色创建一个实心刷子

    CBrush* pOldBrush = pDC->SelectObject(&brush);      //保存当前刷子

 

    RECT rc = { 100,20,200,120 };                     //X起始坐标,Y起始坐标,X终止坐标,Y终止坐标

    if (m_rd_round.GetCheck())                        //如果圆形被选中

    {

        pDC->Ellipse(&rc);                               //绘制圆形

    }

    else

    {

        pDC->Rectangle(&rc);                         //绘制矩形

    }

    pDC->SelectObject(pOldBrush);                     //把之前的刷子赋值回去

    return bRet;

}

 

 

void CMFCRBdemoDlg::OnBnClickedChkBlue()

{

    // TODO: 在此添加控件通知处理程序代码

    Invalidate();//失效,会重新绘制对话框,擦除背景

}

 

 

void CMFCRBdemoDlg::OnBnClickedChkGreen()

{

    // TODO: 在此添加控件通知处理程序代码

    OnBnClickedChkBlue();

}

 

 

void CMFCRBdemoDlg::OnBnClickedChkRed()

{

    // TODO: 在此添加控件通知处理程序代码

    OnBnClickedChkBlue();

}

 

 

void CMFCRBdemoDlg::OnBnClickedRdRect()

{

    // TODO: 在此添加控件通知处理程序代码

    OnBnClickedChkBlue();

}

 

 

运行效果图

VS2019 C++ 学习笔记二(复选框)

相关文章: