创建一个画图界面
首先将控件都绑定控件变量
然后在初始化函数BOOL CCRdemoDlg::OnInitDialog()中添加初始化信息CheckRadioButton(IDC_RD_RECT,IDC_RD_ROUND,IDC_RD_ROUND)
函数功能:该函数给一组单选按钮中的一个指定按钮加上选中标志,并且清除组中其他按钮的选中标志。
函数原型:BOOL CheckRadioButton(HWND hDlg, int nlDFirstButton, int nlDLastBUtton, int nlDCheckButton);
参数:
hDlg:指向包含单选按钮的对话框的句柄。
nlDFirstButton:指定组中第1个
单选按钮的标识符。
nlDLastButton:指定组中最后一个单选按钮的标识符。
nlDCheckButton:指出要选中的那个单选按钮的标识符。
返回值:如果函数执行成功,返回值非零;如果失败,则返回零。若想获取更多
错误信息,请调用GetLastError函数。
然后需要用到对话框属性中消息函数的擦除背景消息函数
BOOL CCRdemoDlg::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); //先把刷子选入dc,dc里原来旧的刷子用一个指针保留下来
RECT rc={50,20,150,120};
if(m_rd_rect.GetCheck())
{
pDC->Rectangle(&rc); //画矩形
}
else
pDC->Ellipse(&rc);
pDC->SelectObject(pOldBrush); //把旧的画刷放回去
return bRet;
}
对蓝色选择框的程序,添加事件(
单击):
void CCRdemoDlg::OnBnClickedChkBlue()
{
// TODO: 在此添加控件通知处理程序代码
Invalidate();//失效,重新绘制对话框,失效以后就擦除背景,也就是执行上面的函数
}
其他选择框分别调用OnBnClickedChkBlue();函数即可