CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何更改对话框的背景颜色

楼主yuezhiyin(乐知音)2002-08-17 13:15:52 在 VC/MFC / 基础类 提问

基于对话框的工程,我想只更改其中一个对话框的背景颜色,不用SetDialogBkColor函数,我处理了CTRCOLOR消息,可是上面的控件的背景颜色没有改变,控件有组合框,编辑框,静态控件等好几种,我该如何做,有没有别的方法。 问题点数:80、回复次数:11Top

1 楼clife(笨狗API.NET)回复于 2002-08-17 13:18:15 得分 5

重载OnPaint,在里面用FillRect,用刷子给对话框上色Top

2 楼pp_ipr(ikn)回复于 2002-08-17 13:20:11 得分 20

如何改变对话或窗体视窗的背景颜色  
     
  调用CWinApp   :   :   SetDialogBkColor可以改变所有应用程序的背景颜色。第一个参数指定了背景颜色,第二个参数指定了文本颜色。下例将应用程序对话设置为蓝色背景和黄色文本。  
  BOOL   CSampleApp   :   :   InitInstance   (   )  
  {  
    …  
    //use   blue   dialog   with   yellow   text   .  
    SetDialogBkColor   (RGB   (0,   0,   255   ),   RGB   (   255   ,255   ,   0   )   )  
    …  
  }  
  需要重画对话(或对话的子控件)时,Windows向对话发送消息WM_CTLCOLOR,通常用户可以让Windows选择绘画背景的刷子,也可重置该消息指定刷子。下例说明了创建一个红色背景对话的步骤。  
  首先,给对话基类增加一人成员变量  
  CBursh   :class   CMyFormView   :   public   CFormView  
  {  
    …  
    private   :  
    CBrush   m_   brush   //   background   brush  
    …  
  }  
  其次,   在类的构造函数中将刷子初始化为所需要的背景颜色。  
  CMyFormView   :   :   CMyFormView   (   )  
  {  
    //   Initialize   background   brush   .  
    m_brush   .CreateSolidBrush   (RGB   (   0,   0,   255)   )  
  }  
  最后,使用ClassWizard处理WM_CTLCOLOR消息并返回一个用来绘画对话背景的刷子句柄。注意:由于当重画对话控件时也要调用该函数,所以要检测nCtlColor参量。  
  HBRUSH   CMyFormView   :   :   OnCtlColor   (CDC*   pDC   ,   CWnd*pWnd   ,   UINT   nCtlColor  
  )  
  {  
    //   Determine   if   drawing   a   dialog   box   .   If   we   are,   return   +handle   to  
    //our   own   background   brush   .   Otherwise   let   windows   handle   it   .  
    if   (nCtlColor   =   =   CTLCOLOR   _   DLG   )  
    return   (HBRUSH)   m_brush.GetSafeHandle   (   )  
    return   CFormView   :   :   OnCtlColor   (pDC,   pWnd   ,   nCtlColor  
  )  
  }    
  Top

3 楼yuezhiyin(乐知音)回复于 2002-08-17 13:21:30 得分 0

上面的控件的颜色怎么办Top

4 楼clife(笨狗API.NET)回复于 2002-08-17 13:27:22 得分 0

派生控件类,然后分别处理Top

5 楼yuezhiyin(乐知音)回复于 2002-08-17 13:33:26 得分 0

有没有象SetDialogBkColor一样简单的方法,但是可以(只)直接更改本对话框的背景颜色(包括上面的控件的背景颜色)。Top

6 楼captainliyun(茄子)回复于 2002-08-17 13:34:00 得分 5

add   the   OnCtlColor     function  
   
  //add   the   code   here  
       
  CYouDialog::OnCtrlColor(......)  
  {  
           
  }  
  Top

7 楼sjzxyg(小小鸟)回复于 2002-08-17 13:37:41 得分 25

在OnCtrlColor中判断nCtlColor的值,分别处理CTLCOLOR   _   DLG   表示对话框,具体参数如何表示见MSDN  
  Top

8 楼webber84(***闭关修炼中***)回复于 2002-08-17 13:47:40 得分 20

HBRUSH   CZilchDlg::OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)    
  {  
        HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);  
        if(nCtlColor==CTLCOLOR_DLG||nCtlColor==CTLCOLOR_EDIT……)  
              pDC->SetBkColor(RGB(255,0,0));  
        return   m_hBrush;                   //事先创建好的画刷  
  }  
  To   change   the   color   of   the   drop-down   list   box,   create   a   CComboBox   with   an   override   of   OnCtlColor   that   checks   for   CTLCOLOR_LISTBOX   in   the   nCtlColor   parameterTop

9 楼yuezhiyin(乐知音)回复于 2002-08-17 13:58:12 得分 0

编译通不过,CTLCOLOR_LISTBOX   没有定义  
  在MSDN中也没找到CTLCOLOR_LISTBOX   啊Top

10 楼webber84(***闭关修炼中***)回复于 2002-08-17 14:03:19 得分 0

CTLCOLOR_LISTBOX不能加在对话框类的OnCtlColor中,你要从CComboBox派生一个类,在这个类的OnCtlColor中处理CTLCOLOR_LISTBOX.  
        MSDN里有CTLCOLOR_LISTBOX,你看看这里:  
  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_CWnd.3a3a.OnCtlColor.aspTop

11 楼shaohua(流氓大亨文盲高官)回复于 2002-08-17 14:34:27 得分 5

pp_ipr()   和   webber84(糕鱼昏)好象都说到哦。看看这个软件的界面http://www.csdn.net/cnshare/soft/12/12854.shtm  
  是否符合你的要求,如果符合,我再给你贴段代码吧。Top

相关问题

  • 关于对话框的背景颜色修改?
  • 如何改变对话框的背景颜色?
  • 怎样设置对话框的背景颜色?
  • 讨论改变对话框背景颜色的问题
  • 怎么改变工具条、对话框的背景颜色?
  • 请问设置对话框背景颜色怎么设置?
  • 如何获得对话框窗体背景的颜色
  • 都有什么办法改变背景颜色或为对话框加背景
  • 如何修改一个无模式的对话框的背景颜色?
  • 高分相送!如何修改当前对话框的背景颜色?

关键词

  • 控件
  • 函数
  • 消息
  • ctlcolor
  • nctlcolor
  • 对话框
  • onctlcolor
  • 背景颜色
  • cmyformview
  • 对话

得分解答快速导航

  • 帖主:yuezhiyin
  • clife
  • pp_ipr
  • captainliyun
  • sjzxyg
  • webber84
  • shaohua

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo