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, //按钮被按下后的前景色

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

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

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

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

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



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


你可能感兴趣的:(VC++)