5251|13

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

evc 如何改变按钮的背景色 [复制链接]

EVC 如何设置按钮的背景色?我只想实现点击按钮后,让其改变自己的背景色!

最新回复

你的button的类型应该设为自画  详情 回复 发表于 2007-11-20 12:19
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个简单,新建一个类,继续CButton,在OnPaint里面画color.
在OnMouseOut...这些方法里面设置为别的color,,
就可以改color...
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
继续CButton---->继承CButton
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

4
 
给点代码学习一下吧!我要实现得是:当一个条件满足之后,调用一个方法,来改变某个按钮得颜色!
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

5
 
CButton设置背景色颜色不生效,最好继承CButton写个带背景颜色的CButton
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

6
 
也可以通过加载图片,来实现的。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
重载CButton一个类,在消息CtlColor(CDC* pDC, UINT nCtlColor) ;  ON_WM_CTLCOLOR_REFLECT() 里做修改背景颜色处理

第二注意点: wince的界面风格不是XP风格的那种,如果换成XP风格,是不可以改变背景颜色的.
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
如果背景只是单一颜色可以使用CtlColor消息

要是多色最好用贴图方法。

网上搜一下cbitmapbutton
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 
class CButtonZP : public CButton
{
// Construction
public:
        CButtonZP();


// Attributes
public:

// Operations
public:

// Overrides
        // ClassWizard generated virtual function overrides
        //{{AFX_VIRTUAL(CButtonZP)
        public:
        virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS);
        //}}AFX_VIRTUAL

// Implementation
public:
        void SetBGColor(COLORREF crNew);
        virtual ~CButtonZP();
        COLORREF  m_crBg;
        // Generated message map functions
protected:
        //{{AFX_MSG(CButtonZP)
        //}}AFX_MSG

        DECLARE_MESSAGE_MAP()
};



#include "stdafx.h"
#include "2410.h"
#include "ButtonZP.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CButtonZP

CButtonZP::CButtonZP()
{
}

CButtonZP::~CButtonZP()
{
}


BEGIN_MESSAGE_MAP(CButtonZP, CButton)
        //{{AFX_MSG_MAP(CButtonZP)
        //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CButtonZP message handlers
void CButtonZP::SetBGColor(COLORREF crNew)
{
        m_crBg = crNew;
        Invalidate();
}
void CButtonZP::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
        CDC* pDC = CDC::FromHandle(lpDIS->hDC);
       
        TRACE(L"DRAWITEM\r\n");
       
        CRect itemRect = lpDIS->rcItem;
        //准备绘画,用背景颜色填充背景区域
        COLORREF bgColor;
        bgColor = m_crBg;
        CBrush br(bgColor);
        pDC->FillRect(&itemRect, &br);
        //读取按钮字符
        CString sTitle;
        GetWindowText(sTitle);
       
        pDC->SetTextColor(RGB(255,0,0));
        pDC->SetBkColor(bgColor);

        int nOld=pDC->SetBkMode(TRANSPARENT);
        pDC->DrawText(sTitle, sTitle.GetLength(), itemRect, DT_SINGLELINE|DT_VCENTER|DT_CENTER);
        pDC->SetBkMode(nOld);
       
}
调用
CButtonZP        m_BtnAuto;
m_BtnAuto.SetBGColor(RGB(255,0,0));

为什么没效果呢?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

10
 
继承CButton写个带背景颜色的CButton
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
响应 WM_CTLCOLORBTN
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

12
 
感谢大家热情得回答!我不是想初始化得时候设置按钮得背景颜色。我想实现条件满足得时候用命令改变按钮得颜色!
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

13
 
条件满足时就
InvalidateRect
UpdateWindow
一下就行了。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

14
 
你的button的类型应该设为自画
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表