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. 添加关联变量
添加五个控件的变量,如图:
1 | DDX_Control(pDX, IDC_CHECK_RED, m_chk_red); |
分别添加如上变量;
3. 开始写代码吧
现在我们来让程序运行起来时默认选中圆形;
切换到解决方案视图,进入BOOL Cday17Dlg::OnInitDialog()方法:
在末尾return前加入这一行:
1 | // TODO: 在此添加额外的初始化代码 |
代码解释:
在IDC_RADIO_SQURAE和IDC_RADIO_CIRC之间选中IDC_RADIO_CIRC
添加五个控件的事件处理方法
如图所示:
剩下四个都如上添加好;
编辑“蓝色”按钮的点击方法:
1 | void Cday17Dlg::OnBnClickedCheckBlue() |
代码解释:
Invalidate()让对话框重汇对话框;
添加擦除背景消息(OnEraseBkgnd)事件
如图添加OnEraseBkgnd消息处理函数:
编辑OnEraseBkgnd函数:
1 | BOOL Cday17Dlg::OnEraseBkgnd(CDC* pDC) |
代码解释:
- 根据颜色按钮的选择状态来选择颜色为255还是0;
- 用三个的颜色来创建一个画刷;
- 保留旧的画刷;
- 创建RECT 对象,即圆形的大小;
- 根据形状的radio button来选择化圆形还是矩形;
- 还原旧的画刷;
实现其他按钮
其他按钮就只用调用OnBnClickedCheckBlue()就可以了;