学习:Radio Button和Check Box

实现颜色与图形变换的例子:

/*
D:\Visual_Studio_repos\MFC\2\
*/
void CMFCApplication2Dlg::OnBnClickedCheck3()
{
Invalidate(); //重写绘图,会调用OnEraseBkgnd事件
}
BOOL CMFCApplication2Dlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
bool ret = CDialogEx::OnEraseBkgnd(pDC);
//定义颜色变量
int rgb_red, rgb_green, rgb_blue;
rgb_red = chk_red.GetCheck() ? 255 : 0;
rgb_green = chk_green.GetCheck() ? 255 : 0;
rgb_blue = chk_blue.GetCheck() ? 255 : 0;
COLORREF m_Color = RGB(rgb_red, rgb_green, rgb_blue);
CBrush brush;
CBrush *OldBrush;
brush.CreateStockObject(m_Color);
OldBrush = pDC->SelectObject(&brush); //保存默认的的画刷, 之后进行恢复,作用避免内存泄露
RECT rect = {50,20,200,180};
//绘图
if (r_rect.GetCheck()) {
pDC->Rectangle(&rect);
}
else {
pDC->Ellipse(&rect);
}
pDC->SelectObject(OldBrush); //恢复老的画刷,避免内存泄露
return ret;
}

posted @   zpchcbd  阅读(189)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示