- 复选框
- 单选框
- 分组框(Group Box)
- 示例:三原色画图
建立初始界面(单选框和复选框放在分组框中)
注意:单选按钮一定要是连续的tab键顺序
- 将矩形Group属性置为True
- 分别给几个按钮关联控件变量
- 初始化对话框中添加代码
// TODO: 在此添加额外的初始化代码
//参数分别为:初始按钮,结束按钮,默认选中按钮
CheckRadioButton(IDC_RD_RECT,IDC_RD_ROUND,IDC_RD_ROUND);
- 蓝色复选框右键添加事件处理程序
void CCMBDemoDlg::OnBnClickedChkBlue()
{
// TODO: 在此添加控件通知处理程序代码
//点击失效,重新绘制对话框
Invalidate();
}
- 失效以后就会重新绘制对话框,重写擦除背景色消息
BOOL CCMBDemoDlg::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(左上角x坐标 , 左上角y坐标,矩形的宽,矩形的高)
RECT rc = {40,20,200,180};
//选中矩形画矩形
if(m_rd_rect.GetCheck()){
pDC->Rectangle(&rc);
}
//选中圆形画圆形
else {
pDC->Ellipse(&rc);
}
//放回旧画刷
pDC->SelectObject(pOldBrush);
return bRet;
}
- 其余选框均调用蓝色按钮点击事件