基于对话框的MFC程序如何改变控件背景色

最近在做一个驱动控制系统测试软件Driver Control System,其有6个通道能够读取6路编码器的数据,并分别用不同颜色的线条把数据绘制出来。我想为每个通道设计一个控件,用户可以点击该控件,就能弹出颜色对话框,用户选择某个颜色后,该控件的颜色能变更为所选择的颜色。

采用的方案是在对话框面板上添加6个图片控件(Picture Control),给每个图片控件都添加单击消息响应函数,在函数中调用ChangeEncColor()函数。其中ChangeEncColor函数即为修改图片控件颜色的函数,其参数为通道序号。在该函数中,首先用MFC的颜色对话框类CColorDialog定义了颜色对话框对象,其构造函数的参数是一个COLORREF结构体,在这里输入对应通道的初始化颜色,即m_clrEnc[nIndex];接着设置颜色对话框为完全展开状态,定义一个矩形类CRect对象rectColor用来获取图片控件的矩形区域;创建一个新的画刷对象以及一个一个画刷对象指针用来保存旧的画刷地址;获取图片控件m_picEnc[nIndex]的DC,并转换成客户区DC类型CClientDC。接着以模态对话框的形式显示颜色对话框,如果用户选择了颜色对话框其中一个颜色,并点击了确定按钮,则进入if语句内部。

void CDriverControlSystemDlg::ChangeEncColor(unsigned char nIndex)
{
	//! 构造颜色对话框
	CColorDialog dlgColor(m_clrEnc[nIndex]);

	//! 颜色对话框完全展开
	dlgColor.m_cc.Flags |= CC_FULLOPEN;

	//! 图片控件的矩形区域坐标
	CRect rectColor;

	//! 创建新的画刷
	CBrush newBrush;

	//! 保存旧画刷
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值