2.2 复选框和单选按钮的使用实例
来源:互联网 发布:node schedule 中断 编辑:程序博客网 时间:2024/05/21 22:27
复选框和单选按钮都用于在界面上显示一些选项供用户选择,界面上的复选框可以随意选择或取消选择,而处于同一组的单选按钮,同时只能有一个处于选中状态,当一个单选按钮变成选择状态时,其同组中之前选中的控件将自动清除选择状态;
2.2.1 技术要点:
- 和按钮控件一样,复选框和单选按钮在单击时都会发出 BN_ CLICKED 消息;
- 实际上,复选框和单选框按钮本身就是按钮控件,只是比普通按钮控件多了“BS_ CHECKBOX ”、“BS_ RADIOBUTTON ”等风格,使得其功能和外观不同于普通按钮;
- 在 MFC 中,对这两种控件的封装都是 CButton 类;
…
2.2.2 实例步骤:
本实例通过一个三基色测试程序,演示复选框控件和单选控件的使用方法。实例步骤如下:
- 新建一个基于对话框的 MFC 应用程序,项目名称为“CheckBoxDemo”;
- 在主对话框上添加3个复选框控件,将其ID分别修改为“IDC_ CHK_ RED”、“IDC_ CHK_ GREEN”和“IDC_ CHK_ BLUE”。文本属性分别修改为“红”、“绿”和“蓝”;
- 在主对话框上添加两个单选按钮控件,将其 ID 分别修改为“ IDC_ RD_ RECT”和“ IDC_ RD_ ROUND”,文本属性分别修改为“矩形”和“圆形”。添加控件后,选中“IDC_ RD_ RECT”的“Group”属性。注意在添加控件时要连续按照顺序添加,以保证其 ID 的连续性;
- 在对话框中单击鼠标右键,并单击弹出菜单中的“ClassWizard”项,打开类向导。在类向导中选择“Member Variables”选项卡,在“Control IDs”列表框中选中“IDC_ CHK_ BLUE”。单击“Add Variable”按钮,将弹出添加变量对话框,在“Member variable name”文本框中输入变量名称“m_ chk_ blue”,并将“Category”下拉框的选项修改为“Control”,单击“OK”按钮为控件添加控件型变量;
- 重复上诉步骤,为对话框上的所有复选框的单选框按钮添加控件型变量,添加变量后的类向导界面如图;
- 再通过类向导为主对话框添加“WM_ ERASEBKGND”消息的响应函数。注意要先将类向导中“Class Info”标签页中的“Message filter”修改为“Window”,才能在“Message Maps”标签页中看到该消息;
函数代码如下所示:
//WM_ERASEBKGND消息的响应函数BOOL CCheckBoxDemoDlg::OnEraseBkgnd(CDC* pDC) { //先绘制默认背景 BOOL bRet = CDialog::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); //将画刷选入DC CBrush *pOldBrush = pDC->SelectObject(&brush); //根据选择,绘制矩形或圆形 RECT rc = {50, 20, 150, 120}; if(m_rd_rect.GetCheck()) pDC->Rectangle(&rc); else pDC->Ellipse(&rc); //恢复DC原状 pDC->SelectObject(pOldBrush); return bRet;}
通过类向导,为主对话框上的所有复选框和单选按钮添加单击事件的响应函数,函数代码如下:
//界面上的单选按钮和复选框的单击事件响应函数void CCheckBoxDemoDlg::OnChkBlue() { //选项改变时,让对话框重绘 Invalidate();}//其余控件均采用相同的处理代码void CCheckBoxDemoDlg::OnChkGreen() { OnChkBlue();}void CCheckBoxDemoDlg::OnChkRed() { OnChkBlue();}void CCheckBoxDemoDlg::OnRdRect() { OnChkBlue();}void CCheckBoxDemoDlg::OnRdRound() { OnChkBlue();}
在主对话框的 OnInitDialog 事件中添加如下所示的初始化代码:
BOOL CCheckBoxDemoDlg::OnInitDialog(){ CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here //默认选择“圆形”单选按钮 CheckRadioButton(IDC_RD_RECT, IDC_RD_ROUND, IDC_RD_ROUND); return TRUE; // return TRUE unless you set the focus to a control}
2.2.3 程序运行:
按 F5 键运行程序,修改界面上的选项,程序就会自动在界面上绘制出指定颜色的图形:
2.2.4 源程序解读:
- 通过本节实例,读者可以掌握给对话框上的控件添加变量的方法。变量有两种类型,一种是控件变量,通过该变量可以访问和控制控件的所有属性。另一种是数值型变量,通过该变量可以方便地访问控件的值,但无法访问更多属性;
- 一组单选按钮控件在对话框上必须具有连续的ID,并且这组控件中的第一个选中了“Group”属性,这样这组控件就具有了互斥特性,以保证同时只有一个能被选中;
阅读全文
1 0
- 2.2 复选框和单选按钮的使用实例
- 6.单选按钮和复选框的应用实例
- 单选按钮复选框实例
- 复选框和单选按钮使用demo
- C#界面设计之复选按钮与单选按钮的使用实例
- 复选框当单选按钮使用
- 2复选框和单选按钮
- 单选按钮和复选框整合
- 单选按钮和复选框
- 单选按钮和复选框
- 单选按钮和复选框
- 单选按钮和复选框的数据绑定
- 使用JS判断单选按钮和复选框是否被选中的代码
- 单选按钮Radio Button和复选框Check Box的使用
- java Swing 之单选按钮和复选按钮的使用
- C#当中单选按钮、复选框实例
- 单选按钮和复选按钮
- 单选按钮和复选按钮
- 什么是百度权重 百度指数词
- /mnt/backup/android-x86_64-nougat-mptcp/kernel/arch/x86/configs/android-x86_64_defconfig
- Oracle PL/SQL开发基础(第十九弹:集合的异常处理)
- DNN网络结构设计浅析之GoogLeNet
- K-means算法在手写体数字图像数据上的使用示例-代码详解
- 2.2 复选框和单选按钮的使用实例
- java中static的一些感悟
- 个人学习(十四)
- python numpy中nonzero()的用法
- Java断言机制
- VBA工作簿操控备忘
- java中set集合总结
- vs2010配置opencv3.0
- 1、Java的8种基本数据类型2017