改变button按钮的背景色

时间:2021-02-04 14:51:04
我在界面上设置了几个编辑框和一个button按钮,当我的编辑框显示的值超出一定范围的话,我就设置button按钮的背景色为红色,以示提示出错了,请问如何改变这个button的背景色的,最好有合适的例程,或者告之如果处理,谢谢。等待

26 个解决方案

#1


按钮也是窗口,先得到HWND,然后填充背景就行。

#2


GetDC
FillRect

#3


如果使用的MFC:那就使用CButton的SetBitmap函数,直接将一个图片帖这儿。

#4


我也顺便学习一下,呵呵

#5


看看CButtonST:http://www.codeproject.com/KB/buttons/cbuttonst.aspx

#6


SetBitmap,直接弄个红色的图贴上去,快速高效

#7


CDC* pDC = m_YourButton.GetDC();
CRect rtButton;
YourButton.GetClientRect(&rtButton);
pDC->FillSolidRect(&rtButton, RBG(255,0,0));

#8


楼上的方法,一刷新,红色就没有了。不如用现成的彩色控件,网上多的很。

#9


引用 5 楼 lin 的回复:
看看CButtonST:http://www.codeproject.com/KB/buttons/cbuttonst.aspx



看看这个,绝对包你满意!!!!!

#10


有没有不需要button派生类的,我要的其实就是个简单的操作的
if(m_edit1 >0.1)  //超限
{  
    button1按钮变成红色
}

我就是想要这个简单的。
我的编辑框数据超限也会显示红色的,我用了一个OnCtlColor,有没有在此基础上做的,我在程序里面加了
if(nCtlColor==CTLCOLOR_BTN  && pWnd->GetDlgCtrlID()==IDC_BUTTON1)  好像都不起作用的

#11


按钮美化的一些代码
http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=301

#12


重绘按钮类 具体可以参照孙鑫VC++第十章内容 

这书网上搜下很多的电子版本 绘制过程也不是很麻烦

#13


用其中的美化的按钮的类,或者你自己再在CButton派生一个类,自己写代码

#14


CButtonST  SetbkColor  函数

#15


我需要程序代码的,贴出来,网上这么多的,都看乱了

#16


CButton派生一个类自己在里面写代码的,
if(m_edit1 《0.1)  //不超限 
{  
    button1按钮为绿色 
}
else    //超限
{
    button按钮为红色


为什么当数据超限还显示绿色,只有当我单击一下按键才显示红色,我想实现的当数据超限后按钮自己直接变为红色

#17


添加windows消息OnCtlColor就行了吧

#18


添加windows消息OnCtlColor 不行的,不能改变背景色,我试过了,所以我才用派生类的

#19


第一: 使用 其他的Button类  CButtonST 好象
第二  OnCtlColor 应该是可以的·而且是优选。。判断当前绘制的是你想改的Button然后,还回一个你需要的颜色的画刷过去

#20


CButton派生一个类自己在里面写代码的, 
if(m_edit1 《0.1)  //不超限 
{  
    button1按钮为绿色 

else    //超限 

    button按钮为红色 


为什么当数据超限还显示绿色,只有当我单击一下按键才显示红色,我想实现的当数据超限后按钮自己直接变为红色 
现在我的问题是不是没有返回颜色的画刷

#21


在OnCtlColor里去判断ID号来实现按钮背景换色

#22


在OnCtlColor里去判断ID号来实现按钮背景换色,我试过了,没有效果的,但在OnCtlColor里面我还判断了edit框的,我加了判断按钮改变的背景色的,结果没有效果的

#23


COLORREF m_NewColor = RGB(255,5,5); 
CBrush *pOldBrush; 
CBrush cBrush; 
CRect rect;  // TODO: Add your message handler code here and/or call default
GetDlgItem(ID)->GetClientRect(rect);  //得到控件区域
// this->ScreenToClient(rect);
CDC* dc = GetDlgItem(ID)->GetDC();  //得到控件DC 
cBrush.CreateSolidBrush(m_NewColor);        //用新的颜色建立新画刷 
pOldBrush = dc->SelectObject(&cBrush);//、      //选择新画刷,并保存旧画刷 
dc->FillRect(rect, &cBrush);                //重绘控件背景 
dc->SelectObject(pOldBrush);


我用这个改变静态文本框的颜色,你试下。

#24


在网上找一下st的按钮,看看.

#25


看了CButtonST:http://www.codeproject.com/KB/buttons/cbuttonst.aspx
还不错~

#26


在OnCtlColor里,谁能改变按钮的颜色的,能把代码弄一下让我们看吗

#1


按钮也是窗口,先得到HWND,然后填充背景就行。

#2


GetDC
FillRect

#3


如果使用的MFC:那就使用CButton的SetBitmap函数,直接将一个图片帖这儿。

#4


我也顺便学习一下,呵呵

#5


看看CButtonST:http://www.codeproject.com/KB/buttons/cbuttonst.aspx

#6


SetBitmap,直接弄个红色的图贴上去,快速高效

#7


CDC* pDC = m_YourButton.GetDC();
CRect rtButton;
YourButton.GetClientRect(&rtButton);
pDC->FillSolidRect(&rtButton, RBG(255,0,0));

#8


楼上的方法,一刷新,红色就没有了。不如用现成的彩色控件,网上多的很。

#9


引用 5 楼 lin 的回复:
看看CButtonST:http://www.codeproject.com/KB/buttons/cbuttonst.aspx



看看这个,绝对包你满意!!!!!

#10


有没有不需要button派生类的,我要的其实就是个简单的操作的
if(m_edit1 >0.1)  //超限
{  
    button1按钮变成红色
}

我就是想要这个简单的。
我的编辑框数据超限也会显示红色的,我用了一个OnCtlColor,有没有在此基础上做的,我在程序里面加了
if(nCtlColor==CTLCOLOR_BTN  && pWnd->GetDlgCtrlID()==IDC_BUTTON1)  好像都不起作用的

#11


按钮美化的一些代码
http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=301

#12


重绘按钮类 具体可以参照孙鑫VC++第十章内容 

这书网上搜下很多的电子版本 绘制过程也不是很麻烦

#13


用其中的美化的按钮的类,或者你自己再在CButton派生一个类,自己写代码

#14


CButtonST  SetbkColor  函数

#15


我需要程序代码的,贴出来,网上这么多的,都看乱了

#16


CButton派生一个类自己在里面写代码的,
if(m_edit1 《0.1)  //不超限 
{  
    button1按钮为绿色 
}
else    //超限
{
    button按钮为红色


为什么当数据超限还显示绿色,只有当我单击一下按键才显示红色,我想实现的当数据超限后按钮自己直接变为红色

#17


添加windows消息OnCtlColor就行了吧

#18


添加windows消息OnCtlColor 不行的,不能改变背景色,我试过了,所以我才用派生类的

#19


第一: 使用 其他的Button类  CButtonST 好象
第二  OnCtlColor 应该是可以的·而且是优选。。判断当前绘制的是你想改的Button然后,还回一个你需要的颜色的画刷过去

#20


CButton派生一个类自己在里面写代码的, 
if(m_edit1 《0.1)  //不超限 
{  
    button1按钮为绿色 

else    //超限 

    button按钮为红色 


为什么当数据超限还显示绿色,只有当我单击一下按键才显示红色,我想实现的当数据超限后按钮自己直接变为红色 
现在我的问题是不是没有返回颜色的画刷

#21


在OnCtlColor里去判断ID号来实现按钮背景换色

#22


在OnCtlColor里去判断ID号来实现按钮背景换色,我试过了,没有效果的,但在OnCtlColor里面我还判断了edit框的,我加了判断按钮改变的背景色的,结果没有效果的

#23


COLORREF m_NewColor = RGB(255,5,5); 
CBrush *pOldBrush; 
CBrush cBrush; 
CRect rect;  // TODO: Add your message handler code here and/or call default
GetDlgItem(ID)->GetClientRect(rect);  //得到控件区域
// this->ScreenToClient(rect);
CDC* dc = GetDlgItem(ID)->GetDC();  //得到控件DC 
cBrush.CreateSolidBrush(m_NewColor);        //用新的颜色建立新画刷 
pOldBrush = dc->SelectObject(&cBrush);//、      //选择新画刷,并保存旧画刷 
dc->FillRect(rect, &cBrush);                //重绘控件背景 
dc->SelectObject(pOldBrush);


我用这个改变静态文本框的颜色,你试下。

#24


在网上找一下st的按钮,看看.

#25


看了CButtonST:http://www.codeproject.com/KB/buttons/cbuttonst.aspx
还不错~

#26


在OnCtlColor里,谁能改变按钮的颜色的,能把代码弄一下让我们看吗