如何改变窗口和控件的背景色

CView中响应2个消息:

  ON_WM_ERASEBKGND()
  ON_WM_CTLCOLOR()

例子:

.h

 afx_msg HBRUSH OnCtlColor(
   CDC* pDC,
   CWnd* pWnd,
   UINT nCtlColor
 );
 afx_msg BOOL OnEraseBkgnd(CDC* pDC) ;
 DECLARE_MESSAGE_MAP()

 

.cpp

 

BEGIN_MESSAGE_MAP(CMapConfig_Tool_SubFormView, CFormView)
  ON_WM_ERASEBKGND()
  ON_WM_CTLCOLOR()

END_MESSAGE_MAP()

 

BOOL CMapConfig_Tool_SubFormView::OnEraseBkgnd(CDC* pDC)  

 CBrush*   pOldBrush  =  pDC->SelectObject(GetBkBrush());  
 CRect   theClip;  
    pDC->GetClipBox(&theClip);  
 pDC->PatBlt(theClip.left,theClip.top,theClip.Width(),theClip.Height(),PATCOPY);  
 pDC->SelectObject(pOldBrush);  
 return   TRUE;
}  

 

HBRUSH CMapConfig_Tool_SubFormView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
  HBRUSH   m_brMine   ;    
  switch(nCtlColor)  
  { 
  case   CTLCOLOR_EDIT: 
   //pDC->SetBkColor(RGB(200,200,200));
   pDC->SetBkMode(1);
   //m_brMine   =   GetBkBrush()->operator HBRUSH();
   //break;
  case   CTLCOLOR_STATIC:  
  case   CTLCOLOR_LISTBOX:  
  case   CTLCOLOR_DLG:  
 
  case   CTLCOLOR_BTN:  
  case   CTLCOLOR_MSGBOX:  
  case   CTLCOLOR_SCROLLBAR:
   pDC->SetBkColor(m_bkColor);
  
   m_brMine   =   GetBkBrush()->operator HBRUSH();  
   break;
   
  default:
   m_brMine     =   CFormView::OnCtlColor(pDC,   pWnd,   nCtlColor);
   break; 
  }  
  return   m_brMine   ; 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值