MFC 学习之 颜色设置<1>

下述方法,对按钮均无用。 VS2008。

背景可以设置,但是按钮会失效。


// 设置背景色

<pre name="code" class="cpp">// OnPaint 函数中

CRect   rect; 
CPaintDC   dc(this); 
GetClientRect(rect); 
dc.FillSolidRect(rect,RGB(0,255,50));   //设置为绿色背景

 

// 此函数已废弃

void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192), COLORREF clrCtlText = RGB(0, 0, 0));

调用的话,在 APP InitInstince 中的 DoModal 之前



// WM_CTLCOLOR()

// 颜色刷

BEGIN_MESSAGE_MAP()
ON_WM_CTLCOLOR()

.h 文件中声明:
CBrush  brush;
HBRUSH  OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor);

.CPP 中初始化:
m_brush.CreateSolidBrush(RGB(255,0,0));  // 设置红色画笔

// 实现
HBRUSH CMFC_COLORDlg::OnCtlColor(CDC* pDC,CWnd* pWnd,UINT nCtlColor)
{
    return   m_brush;
}

//按钮上看不到字了???

<pre name="code" class="cpp">//可以根据不同的控件类型返回不同的画刷,来实现不同控件颜色的设置  
	
 CTLCOLOR_BTN                按钮控件
 CTLCOLOR_DLG                对话框
 CTLCOLOR_EDIT               编辑框
 CTLCOLOR_LISTBOX            列表控件
 CTLCOLOR_MSGBOX             消息控件
 CTLCOLOR_SCROLLBAR          滚动条控件
 CTLCOLOR_STATIC             静态控件
 

HBRUSH CMFC_COLORDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
   HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
<pre name="code" class="cpp"><pre name="code" class="cpp">   if(nCtlColor==CTLCOLOR_BTN)          //更改按钮颜色
 {
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(121,121,255));  
  HBRUSH b=CreateSolidBrush(RGB(121,121,255));
  return b;
 }
 else if(nCtlColor==CTLCOLOR_SCROLLBAR)  //
 {
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(233,233,220));
  HBRUSH b=CreateSolidBrush(RGB(233,233,220));
  return b;
 }
 else if(nCtlColor==CTLCOLOR_EDIT)   //更改编辑框
 {
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(165,254,236));
  HBRUSH b=CreateSolidBrush(RGB(165,254,236));
  return b;
 }
 else if(nCtlColor==CTLCOLOR_STATIC)  //更改静态文本
 {
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(166,254,1));
  HBRUSH b=CreateSolidBrush(RGB(166,254,1));
  return b;
 }
 else if(nCtlColor==CTLCOLOR_DLG)   //更改对话框背景色
 {
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(166,254,1));
  HBRUSH b=CreateSolidBrush(RGB(166,254,1));
  return b;
 }
 return hbr;
}

 
 


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值