Button显示颜色

原创 2006年05月20日 16:00:00

.h文件

// ecolorbtn.h : ヘッダー ファイル
//
#ifndef _ECOLOR_BUTTON_
#define _ECOLOR_BUTTON_

class EColorBtn : public CButton
{
// コンストラクション
public:
  EColorBtn( );
  ~EColorBtn( );
// アトリビュート
public:
  void SetColor(COLORREF rgbColor,BOOL bActive);
  void ESetDrawPal( CPalette *pPal );
  COLORREF GetColor();
protected:
  COLORREF m_rgbColor;
  COLORREF m_rgbActive;
  BOOL m_bActive;
 
  CPalette *m_pDrawPal;

// オペレーション
public:

// オーバーライド
 // ClassWizard は仮想関数を生成しオーバーライドします。
 //{{AFX_VIRTUAL(EColorBtn)
 public:
 virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
 virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
 //}}AFX_VIRTUAL

// インプリメンテーション
public:

 // 生成されたメッセージ マップ関数
protected:
 //{{AFX_MSG(EColorBtn)
 //}}AFX_MSG

 DECLARE_MESSAGE_MAP()
public:
};

#endif

.cpp文件

// ecolorbtn.cpp : インプリメンテーション ファイル
//

#include "stdafx.h"
#include "ecolorbtn.h"
#include "./ecolorbtn.h"

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

/////////////////////////////////////////////////////////////////////////////
// EColorBtn

EColorBtn::EColorBtn()
{
  m_pDrawPal = NULL;
}

EColorBtn::~EColorBtn()
{
}


BEGIN_MESSAGE_MAP(EColorBtn, CButton)
 //{{AFX_MSG_MAP(EColorBtn)
 //}}AFX_MSG_MAP
// ON_WM_DRAWITEM()
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// EColorBtn メッセージ ハンドラ

void EColorBtn::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
  CDC *cdc = GetDC();
  BYTE byR, byG, byB;
  CPalette *pOldPal = NULL;

  if ( m_pDrawPal != NULL ){
    pOldPal = cdc->SelectPalette( m_pDrawPal, FALSE );
    cdc->RealizePalette( );
  }
 
  byR = GetRValue( m_rgbColor );
  byG = GetGValue( m_rgbColor );
  byB = GetBValue( m_rgbColor );


  CBrush brush( PALETTERGB( byR, byG, byB ) );
  CRect rect;
 
  GetClientRect(&rect);
 
  cdc->FillRect( &rect, &brush );
 
  if(m_bActive == TRUE){    //Active
    CBrush Framebrush(PALETTERGB(255-GetRValue(m_rgbColor),255-GetGValue(m_rgbColor),
     255-GetBValue(m_rgbColor)));
    cdc->FrameRect( &rect, &Framebrush );
  }
 
  if ( pOldPal != NULL ){
    cdc->SelectPalette( pOldPal, FALSE );
  }

  ReleaseDC(cdc);
}

void EColorBtn::SetColor(COLORREF rgbColor,BOOL bActive)
{
 m_rgbColor = rgbColor;
 m_bActive = bActive;
 Invalidate();
}

COLORREF EColorBtn::GetColor()
{
 return m_rgbColor;
}


BOOL EColorBtn::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
 m_rgbColor = RGB(0,255,0);
 m_rgbActive = RGB(0,0,255);
 m_bActive = FALSE;

 return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}


void EColorBtn::ESetDrawPal( CPalette *pPal )
{
  m_pDrawPal = pPal;
}

应用例子:

 CColorDialog _colDlg;
 INT_PTR  _response = _colDlg.DoModal();
 if(_response == IDOK)
 {
  _color = _colDlg.GetColor();
  _colorBtn.SetColor(_color, TRUE);
 }

Android问题集(二)——TextView在点击时显示不同颜色,Button点击效果

文字点击时字体变色设置,以及按钮的点击效果设置
  • youngwm
  • youngwm
  • 2015年09月01日 20:51
  • 940

button颜色的控制

  • 2011年10月15日 12:59
  • 2KB
  • 下载

MFC修改button的颜色、背景、边框、对话框标题

MFC的button控件是一个不同于其他控件,其CButtton类是CWnd的一个子类,在修改button的背景、颜色和边框的时候必须自己进行编写一个新的类,如CMyButton。下面是进行背景、颜色...

更改Button前景背景颜色VC源代码

  • 2008年12月16日 14:51
  • 12KB
  • 下载

Android button 圆角动态更改背景颜色

圆角button实现(左下角和右下角为圆角) 如果有背景图片切换,可以定义属性             android:id="@+id/ok_btn"             android:l...

vc button背景颜色类

  • 2008年11月24日 21:11
  • 3KB
  • 下载

BUtton改变颜色

  • 2012年04月26日 20:07
  • 1KB
  • 下载

android Button 点击背景与文字颜色变化效果

我最近一直在研究Button,那么话多说,我们直接来上效果和代码 正常效果: 按下效果: 先在values目录创建color.xml文件,在里面加入以下自定义颜色(注意不是用color标签)的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Button显示颜色
举报原因:
原因补充:

(最多只允许输入30个字)