设置对话框背景(总结)


方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。
---- 其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色。下面的例子是将应用程序对话 框设置为蓝色背景和红色文本,步骤如下:
---- ① 新建一个基于Dialog的MFC AppWizard应用程序ExampleDlg。
---- ② 在CExampleDlgApp ::InitInstance()中添加如下代码:

BOOL CExampleDlgApp: : InitInstance ( )
{
…
    CExampleDlgDlg dlg;
    m_pMainWnd = &dlg;
//先于DoModal()调用,将对话框设置为蓝色背景、红色文本
    SetDialogBkColor(RGB(0,0,255),RGB(255,0,0));
    int nResponse = dlg.DoModal();
…
}

---- 编译并运行,此时对话框的背景色和文本色已发生了改变。值得注意的是:在调用DoModal()之前必须 先调用SetDialogBkColor,且此方法是将改变应用程序中所有的对话框颜色,并不能针对某一个指定的对 话框

方法二:重载OnPaint(),即WM_PAINT消息

void CExampleDlgDlg::OnPaint()
{
    if (IsIconic())
…
   else
   {
        CRect rect;
        CPaintDC dc(this);
        GetClientRect(rect);
        dc.FillSolidRect(rect,RGB(0,255,0));  //设置为绿色背景
        CDialog::OnPaint();
   }
方法三:重载WM_CTLCOLOR响应函数
HBRUSH   CDlgTest::OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)     
  {   
  //HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);   
    
  //   TODO:   Change   any   attributes   of   the   DC   here   
  switch   (nCtlColor)   
  {   
  case   CTLCOLOR_DLG:   
  {   
      CBrush*           back_brush;   
      COLORREF         color;   
      color   =   RGB(255,255,255);   
      back_brush   =   new   CBrush(color);   
      return   (HBRUSH)   (back_brush->m_hObject);   
  }   
  }   
  return(CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor));   
  //   TODO:   Return   a   different   brush   if   the   default   is   not   desired   
  //return   hbr;   
  } 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值