VC++深入详解 第十章 绘图控制 用CButtonST类改变按钮控件的背景色及文本颜色 自己实现

在学习孙鑫老师的vc++深入详解一书第十章 10.6.4  改变按钮控件的背景色及文本颜色 一节中讲到用CButtonST类来实现的方法,书中用到CButtonST类的子函数

m_btnST.SetActiveBgColor(RGB(0,0,255));
m_btnST.SetActiveFgColor(RGB(255,0,0));

m_btnST.SetInactiveBgColor(RGB(0,0,255));
m_btnST.SetInactiveFgColor(RGB(255,0,0));

但是在我下载到新版的CButtonST类的BtnST.cpp中没有这个函数

在此新版的CButtonST类实现改变按钮控件的背景色及文本颜色用如下函数

m_btnST.SetColor(CButtonST::BTNST_COLOR_BK_IN, RGB(0,0,255));
	m_btnST.SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(255,0,0));

	m_btnST.SetColor(CButtonST::BTNST_COLOR_BK_OUT, RGB(255,0,255));
	m_btnST.SetColor(CButtonST::BTNST_COLOR_FG_OUT, RGB(255,255,0));

	m_btnST.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, RGB(0,255,255));
提示:SetColor函数的第一个参数表示按钮的各个状态,前景色就是文字的颜色,它们的取值表示:
      BTNST_COLOR_BK_IN //鼠标放在按钮内时的背景色
      BTNST_COLOR_FG_IN, //鼠标放在按钮内时的前景色
      BTNST_COLOR_BK_OUT, //普通状态时的背景色
      BTNST_COLOR_FG_OUT, //普通状态时的前景色
      BTNST_COLOR_BK_FOCUS, //按钮被按下后的背景色
      BTNST_COLOR_FG_FOCUS, //按钮被按下后的前景色

另外,在调试过程中遇到如下警告:

多次子类化造成Debug Assertion Failed! wincore.cpp Line: 320

原因是在语句m_btnST.SubclassDlgItem(IDC_BTN_ST,this);造成了m_btnST的重复子类化将这句注释掉就可以了。

运行结果:三张图的按钮ButtonST,不同颜色分别为普通状态下颜色,鼠标移动上面的颜色以及鼠标按下后显示的颜色





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值