MFC程序 更改 文本框 控件背景

56 篇文章 2 订阅
43 篇文章 0 订阅

下面的例子是将应用程序对 话框设置为蓝色背景和红色文本

对于分布在对话框上的控件,我们可以修改其颜色、其背景颜色,比如对静态文本、文本编辑框、列表框等等。

重载OnCtlColor   (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor),即WM_CTLCOLOR消息。具体步骤如下(以上例工程为准):    
  ①在CExampleDlgDlg的头文件中,添加一个CBrush的成员变量:     

class   CExampleDlgDlg     public   CDialog      
 {...       
  protected:         CBrush   m_brush;      
   ...     
  };   

  ②在OnInitDialog()函数中添加如下代码:     

BOOL   CExampleDlgDlg::OnInitDialog ()  
    
    ...         //   TODO:   Add   extra   initialization   here     
    m_brush.CreateSolidBrush(RGB(0,   255,   0));   //   生成一绿色刷子      
     ...    
     

③:利用ClassWizard重载OnCtlColor(…)(即WM_CTLCOLOR消息):

 

HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)  
     
  HBRUSH hbr CDialog::OnCtlColor(pDC, pWnd, nCtlColor);     
  if(nCtlColor   ==CTLCOLOR_DLG)      //对话框颜色       
  return   m_brush;       //返加绿色刷子      
  
 if(nCtlColor==CTLCOLOR_STATIC && pWnd->GetDlgCtrlID()==IDC_STATIC)  //静态文本颜色,并且指定控件ID号       
           pDC->SetTextColor(RGB(255,0,0));          
  pDC->SetBkColor(RGB(191,219,255));     //静态控件的背景颜色设置,红字蓝底。          
 //pDC->SetBkMode(TRANSPARENT);    //模式设置透明的话,则忽略静态控件的背景颜色设置,与对话框颜色融合,这条语句运行,与对话框即MFC背景图像融合,保持一致。  与上条语句二选一        
  hbr=(HBRUSH)m_brush;           
  if(nCtlColor==CTLCOLOR_EDIT)    //文本编辑框颜色     
  {           pDC->SetTextColor(RGB(0,0,255));          
  //pDC->SetBkColor(RGB(191,219,255));     //静态控件的背景颜色设置         
  pDC->SetBkMode(TRANSPARENT);    //与上条语句二选一     
  hbr=(HBRUSH)m_brush;              
  return hbr;  
  
 
添加WM_CTLCOLOR消息图例:
 

对于其中nCtlColor类型,即它的取值:

CTLCOLOR_DLG   对话框 
CTLCOLOR_EDIT   编辑框 
CTLCOLOR_LISTBOX   列表框   
CTLCOLOR_MSGBOX   消息框 
CTLCOLOR_SCROLLBAR   滑动条 
CTLCOLOR_STATIC   静态文本框、矩形等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值